comparison lisp/calc/calc-keypd.el @ 41265:eb26445485bc

(calc-keypad-mode): New. (calc-do-keypad): Use it. (calc-keypad-map): Move into `calc-keypad-mode'. Change all toplevel `setq' forms to `defvar' forms, and move them before their first use. Use `when', `unless'. Remove trailing periods from error forms. Add description and headers suggested by Emacs Lisp coding conventions.
author Colin Walters <walters@gnu.org>
date Mon, 19 Nov 2001 07:34:59 +0000
parents 73f364fd8aaa
children f4d68f97221e
comparison
equal deleted inserted replaced
41264:0759b2de09c1 41265:eb26445485bc
1 ;; Calculator for GNU Emacs, part II [calc-keypd.el] 1 ;;; calc-keypd.el --- mouse-capable keypad input for Calc
2
2 ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. 3 ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
3 ;; Written by Dave Gillespie, daveg@synaptics.com. 4
5 ;; Author: David Gillespie <daveg@synaptics.com>
6 ;; Maintainer: Colin Walters <walters@debian.org>
4 7
5 ;; This file is part of GNU Emacs. 8 ;; This file is part of GNU Emacs.
6 9
7 ;; GNU Emacs is distributed in the hope that it will be useful, 10 ;; GNU Emacs is distributed in the hope that it will be useful,
8 ;; but WITHOUT ANY WARRANTY. No author or distributor 11 ;; but WITHOUT ANY WARRANTY. No author or distributor
17 ;; supposed to have been given to you along with GNU Emacs so you 20 ;; supposed to have been given to you along with GNU Emacs so you
18 ;; can know your rights and responsibilities. It should be in a 21 ;; can know your rights and responsibilities. It should be in a
19 ;; file named COPYING. Among other things, the copyright notice 22 ;; file named COPYING. Among other things, the copyright notice
20 ;; and this notice must be preserved on all copies. 23 ;; and this notice must be preserved on all copies.
21 24
25 ;;; Commentary:
26
27 ;;; Code:
22 28
23 29
24 ;; This file is autoloaded from calc-ext.el. 30 ;; This file is autoloaded from calc-ext.el.
25 (require 'calc-ext) 31 (require 'calc-ext)
26 32
27 (require 'calc-macs) 33 (require 'calc-macs)
28 34
29 (defun calc-Need-calc-keypd () nil) 35 (defun calc-Need-calc-keypd () nil)
30 36
31
32
33 ;;; Pictorial interface to Calc using a mouse.
34 37
35 (defvar calc-keypad-buffer nil) 38 (defvar calc-keypad-buffer nil)
36 (defvar calc-keypad-menu 0) 39 (defvar calc-keypad-menu 0)
37 (defvar calc-keypad-full-layout nil) 40 (defvar calc-keypad-full-layout nil)
38 (defvar calc-keypad-input nil) 41 (defvar calc-keypad-input nil)
39 (defvar calc-keypad-prev-input nil) 42 (defvar calc-keypad-prev-input nil)
40 (defvar calc-keypad-said-hello nil) 43 (defvar calc-keypad-said-hello nil)
41 44
42 (defvar calc-keypad-map nil) 45 ;;; |----+----+----+----+----+----|
43 (unless calc-keypad-map 46 ;;; | ENTER |+/- |EEX |UNDO| <- |
44 (let ((map (make-sparse-keymap))) 47 ;;; |-----+---+-+--+--+-+---++----|
45 (define-key map " " 'calc-keypad-press) 48 ;;; | INV | 7 | 8 | 9 | / |
46 (define-key map (kbd "RET") 'calc-keypad-press) 49 ;;; |-----+-----+-----+-----+-----|
47 (define-key map (kbd "TAB") 'calc-keypad-menu) 50 ;;; | HYP | 4 | 5 | 6 | * |
48 (define-key map "q" 'calc-keypad-off) 51 ;;; |-----+-----+-----+-----+-----|
49 (define-key map [(mouse-3)] 'calc-keypad-right-click) 52 ;;; |EXEC | 1 | 2 | 3 | - |
50 (define-key map [(mouse-2)] 'calc-keypad-middle-click) 53 ;;; |-----+-----+-----+-----+-----|
51 (define-key map [(mouse-1)] 'calc-keypad-left-click) 54 ;;; | OFF | 0 | . | PI | + |
52 (setq calc-keypad-map map))) 55 ;;; |-----+-----+-----+-----+-----|
56 (defvar calc-keypad-layout
57 '( ( ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over )
58 ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over )
59 ( "+/-" calc-change-sign calc-inv (progn -4 calc-pack) )
60 ( "EEX" ("e") (progn calc-num-prefix calc-pack-interval)
61 (progn -5 calc-pack) )
62 ( "UNDO" calc-undo calc-redo calc-last-args )
63 ( "<-" calc-pop (progn 0 calc-pop)
64 (progn calc-num-prefix calc-pop) ) )
65 ( ( "INV" calc-inverse )
66 ( "7" ("7") calc-round )
67 ( "8" ("8") (progn 2 calc-clean-num) )
68 ( "9" ("9") calc-float )
69 ( "/" calc-divide (progn calc-inverse calc-power) ) )
70 ( ( "HYP" calc-hyperbolic )
71 ( "4" ("4") calc-ln calc-log10 )
72 ( "5" ("5") calc-exp calc-exp10 )
73 ( "6" ("6") calc-abs )
74 ( "*" calc-times calc-power ) )
75 ( ( "EXEC" calc-keypad-execute )
76 ( "1" ("1") calc-arcsin calc-sin )
77 ( "2" ("2") calc-arccos calc-cos )
78 ( "3" ("3") calc-arctan calc-tan )
79 ( "-" calc-minus calc-conj ) )
80 ( ( "OFF" calc-keypad-off )
81 ( "0" ("0") calc-imaginary )
82 ( "." (".") calc-precision )
83 ( "PI" calc-pi )
84 ( "+" calc-plus calc-sqrt ) ) ))
85
86 (defvar calc-keypad-menus '( calc-keypad-math-menu
87 calc-keypad-funcs-menu
88 calc-keypad-binary-menu
89 calc-keypad-vector-menu
90 calc-keypad-modes-menu
91 calc-keypad-user-menu ) )
92
93 ;;; |----+----+----+----+----+----|
94 ;;; |FLR |CEIL|RND |TRNC|CLN2|FLT |
95 ;;; |----+----+----+----+----+----|
96 ;;; | LN |EXP | |ABS |IDIV|MOD |
97 ;;; |----+----+----+----+----+----|
98 ;;; |SIN |COS |TAN |SQRT|y^x |1/x |
99
100 (defvar calc-keypad-math-menu
101 '( ( ( "FLR" calc-floor )
102 ( "CEIL" calc-ceiling )
103 ( "RND" calc-round )
104 ( "TRNC" calc-trunc )
105 ( "CLN2" (progn 2 calc-clean-num) )
106 ( "FLT" calc-float ) )
107 ( ( "LN" calc-ln )
108 ( "EXP" calc-exp )
109 ( "" nil )
110 ( "ABS" calc-abs )
111 ( "IDIV" calc-idiv )
112 ( "MOD" calc-mod ) )
113 ( ( "SIN" calc-sin )
114 ( "COS" calc-cos )
115 ( "TAN" calc-tan )
116 ( "SQRT" calc-sqrt )
117 ( "y^x" calc-power )
118 ( "1/x" calc-inv ) ) ))
119
120 ;;; |----+----+----+----+----+----|
121 ;;; |IGAM|BETA|IBET|ERF |BESJ|BESY|
122 ;;; |----+----+----+----+----+----|
123 ;;; |IMAG|CONJ| RE |ATN2|RAND|RAGN|
124 ;;; |----+----+----+----+----+----|
125 ;;; |GCD |FACT|DFCT|BNOM|PERM|NXTP|
126
127 (defvar calc-keypad-funcs-menu
128 '( ( ( "IGAM" calc-inc-gamma )
129 ( "BETA" calc-beta )
130 ( "IBET" calc-inc-beta )
131 ( "ERF" calc-erf )
132 ( "BESJ" calc-bessel-J )
133 ( "BESY" calc-bessel-Y ) )
134 ( ( "IMAG" calc-imaginary )
135 ( "CONJ" calc-conj )
136 ( "RE" calc-re calc-im )
137 ( "ATN2" calc-arctan2 )
138 ( "RAND" calc-random )
139 ( "RAGN" calc-random-again ) )
140 ( ( "GCD" calc-gcd calc-lcm )
141 ( "FACT" calc-factorial calc-gamma )
142 ( "DFCT" calc-double-factorial )
143 ( "BNOM" calc-choose )
144 ( "PERM" calc-perm )
145 ( "NXTP" calc-next-prime calc-prev-prime ) ) ))
146
147 ;;; |----+----+----+----+----+----|
148 ;;; |AND | OR |XOR |NOT |LSH |RSH |
149 ;;; |----+----+----+----+----+----|
150 ;;; |DEC |HEX |OCT |BIN |WSIZ|ARSH|
151 ;;; |----+----+----+----+----+----|
152 ;;; | A | B | C | D | E | F |
153
154 (defvar calc-keypad-binary-menu
155 '( ( ( "AND" calc-and calc-diff )
156 ( "OR" calc-or )
157 ( "XOR" calc-xor )
158 ( "NOT" calc-not calc-clip )
159 ( "LSH" calc-lshift-binary calc-rotate-binary )
160 ( "RSH" calc-rshift-binary ) )
161 ( ( "DEC" calc-decimal-radix )
162 ( "HEX" calc-hex-radix )
163 ( "OCT" calc-octal-radix )
164 ( "BIN" calc-binary-radix )
165 ( "WSIZ" calc-word-size )
166 ( "ARSH" calc-rshift-arith ) )
167 ( ( "A" ("A") )
168 ( "B" ("B") )
169 ( "C" ("C") )
170 ( "D" ("D") )
171 ( "E" ("E") )
172 ( "F" ("F") ) ) ))
173
174 ;;; |----+----+----+----+----+----|
175 ;;; |SUM |PROD|MAX |MAP*|MAP^|MAP$|
176 ;;; |----+----+----+----+----+----|
177 ;;; |INV |DET |TRN |IDNT|CRSS|"x" |
178 ;;; |----+----+----+----+----+----|
179 ;;; |PACK|UNPK|INDX|BLD |LEN |... |
180
181 (defvar calc-keypad-vector-menu
182 '( ( ( "SUM" calc-vector-sum calc-vector-alt-sum calc-vector-mean )
183 ( "PROD" calc-vector-product nil calc-vector-sdev )
184 ( "MAX" calc-vector-max calc-vector-min calc-vector-median )
185 ( "MAP*" (lambda () (interactive)
186 (calc-map '(2 calcFunc-mul "*"))) )
187 ( "MAP^" (lambda () (interactive)
188 (calc-map '(2 calcFunc-pow "^"))) )
189 ( "MAP$" calc-map-stack ) )
190 ( ( "MINV" calc-inv )
191 ( "MDET" calc-mdet )
192 ( "MTRN" calc-transpose calc-conj-transpose )
193 ( "IDNT" (progn calc-num-prefix calc-ident) )
194 ( "CRSS" calc-cross )
195 ( "\"x\"" "\excalc-algebraic-entry\rx\r"
196 "\excalc-algebraic-entry\ry\r"
197 "\excalc-algebraic-entry\rz\r"
198 "\excalc-algebraic-entry\rt\r") )
199 ( ( "PACK" calc-pack )
200 ( "UNPK" calc-unpack )
201 ( "INDX" (progn calc-num-prefix calc-index) "\C-u\excalc-index\r" )
202 ( "BLD" (progn calc-num-prefix calc-build-vector) )
203 ( "LEN" calc-vlength )
204 ( "..." calc-full-vectors ) ) ))
205
206 ;;; |----+----+----+----+----+----|
207 ;;; |FLT |FIX |SCI |ENG |GRP | |
208 ;;; |----+----+----+----+----+----|
209 ;;; |RAD |DEG |FRAC|POLR|SYMB|PREC|
210 ;;; |----+----+----+----+----+----|
211 ;;; |SWAP|RLL3|RLL4|OVER|STO |RCL |
212
213 (defvar calc-keypad-modes-menu
214 '( ( ( "FLT" calc-normal-notation
215 (progn calc-num-prefix calc-normal-notation) )
216 ( "FIX" (progn 2 calc-fix-notation)
217 (progn calc-num-prefix calc-fix-notation) )
218 ( "SCI" calc-sci-notation
219 (progn calc-num-prefix calc-sci-notation) )
220 ( "ENG" calc-eng-notation
221 (progn calc-num-prefix calc-eng-notation) )
222 ( "GRP" calc-group-digits "\C-u-3\excalc-group-digits\r" )
223 ( "" nil ) )
224 ( ( "RAD" calc-radians-mode )
225 ( "DEG" calc-degrees-mode )
226 ( "FRAC" calc-frac-mode )
227 ( "POLR" calc-polar-mode )
228 ( "SYMB" calc-symbolic-mode )
229 ( "PREC" calc-precision ) )
230 ( ( "SWAP" calc-roll-down )
231 ( "RLL3" (progn 3 calc-roll-up) (progn 3 calc-roll-down) )
232 ( "RLL4" (progn 4 calc-roll-up) (progn 4 calc-roll-down) )
233 ( "OVER" calc-over )
234 ( "STO" calc-keypad-store )
235 ( "RCL" calc-keypad-recall ) ) ))
236
237 (define-derived-mode calc-keypad-mode fundamental-mode "Calculator"
238 "Major mode for Calc keypad input."
239 (define-key calc-keypad-mode-map " " 'calc-keypad-press)
240 (define-key calc-keypad-mode-map (kbd "RET") 'calc-keypad-press)
241 (define-key calc-keypad-mode-map (kbd "TAB") 'calc-keypad-menu)
242 (define-key calc-keypad-mode-map "q" 'calc-keypad-off)
243 (define-key calc-keypad-mode-map [(mouse-3)] 'calc-keypad-right-click)
244 (define-key calc-keypad-mode-map [(mouse-2)] 'calc-keypad-middle-click)
245 (define-key calc-keypad-mode-map [(mouse-1)] 'calc-keypad-left-click)
246 (put 'calc-keypad-mode 'mode-class 'special)
247 (make-local-variable 'calc-main-buffer))
53 248
54 (defun calc-do-keypad (&optional full-display interactive) 249 (defun calc-do-keypad (&optional full-display interactive)
55 (calc-create-buffer) 250 (calc-create-buffer)
56 (let ((calcbuf (current-buffer))) 251 (let ((calcbuf (current-buffer)))
57 (unless (and calc-keypad-buffer 252 (unless (bufferp calc-keypad-buffer)
58 (buffer-name calc-keypad-buffer)) 253 (set-buffer (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*")))
59 (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*")) 254 (calc-keypad-mode)
60 (set-buffer calc-keypad-buffer)
61 (use-local-map calc-keypad-map)
62 (setq major-mode 'calc-keypad)
63 (setq mode-name "Calculator")
64 (put 'calc-keypad 'mode-class 'special)
65 (make-local-variable 'calc-main-buffer)
66 (setq calc-main-buffer calcbuf) 255 (setq calc-main-buffer calcbuf)
67 (calc-keypad-redraw) 256 (calc-keypad-redraw)
68 (calc-trail-buffer)) 257 (calc-trail-buffer))
69 (let ((width 29) 258 (let ((width 29)
70 (height 17) 259 (height 17)
112 (set-window-buffer win calc-keypad-buffer) 301 (set-window-buffer win calc-keypad-buffer)
113 (set-window-start win 1) 302 (set-window-start win 1)
114 (split-window win (- (window-height win) height 1)) 303 (split-window win (- (window-height win) height 1))
115 (set-window-buffer win calcbuf)) 304 (set-window-buffer win calcbuf))
116 (select-window old-win) 305 (select-window old-win)
117 (message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons.") 306 (message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons")
118 (run-hooks 'calc-keypad-start-hook) 307 (run-hooks 'calc-keypad-start-hook)
119 (and calc-keypad-said-hello interactive 308 (and calc-keypad-said-hello interactive
120 (progn 309 (progn
121 (sit-for 2) 310 (sit-for 2)
122 (message ""))) 311 (message "")))
191 "\n"))))) 380 "\n")))))
192 (setq calc-keypad-prev-input calc-keypad-input)) 381 (setq calc-keypad-prev-input calc-keypad-input))
193 382
194 (defun calc-keypad-press () 383 (defun calc-keypad-press ()
195 (interactive) 384 (interactive)
196 (or (eq major-mode 'calc-keypad) 385 (unless (eq major-mode 'calc-keypad-mode)
197 (error "Must be in *Calc Keypad* buffer for this command")) 386 (error "Must be in *Calc Keypad* buffer for this command"))
198 (let* ((row (save-excursion 387 (let* ((row (save-excursion
199 (beginning-of-line) 388 (beginning-of-line)
200 (count-lines (point-min) (point)))) 389 (count-lines (point-min) (point))))
201 (y (/ row 2)) 390 (y (/ row 2))
202 (x (/ (current-column) (if (>= y 4) 6 5))) 391 (x (/ (current-column) (if (>= y 4) 6 5)))
203 radix frac inv 392 radix frac inv
204 (hyp (save-excursion 393 (hyp (with-current-buffer calc-main-buffer
205 (set-buffer calc-main-buffer)
206 (setq radix calc-number-radix 394 (setq radix calc-number-radix
207 frac calc-prefer-frac 395 frac calc-prefer-frac
208 inv calc-inverse-flag) 396 inv calc-inverse-flag)
209 calc-hyperbolic-flag)) 397 calc-hyperbolic-flag))
210 (invhyp t) 398 (invhyp t)
361 (with-current-buffer calc-keypad-buffer 549 (with-current-buffer calc-keypad-buffer
362 (calc-keypad-menu-back))) 550 (calc-keypad-menu-back)))
363 551
364 (defun calc-keypad-menu () 552 (defun calc-keypad-menu ()
365 (interactive) 553 (interactive)
366 (unless (eq major-mode 'calc-keypad) 554 (unless (eq major-mode 'calc-keypad-mode)
367 (error "Must be in *Calc Keypad* buffer for this command")) 555 (error "Must be in *Calc Keypad* buffer for this command"))
368 (while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu) 556 (while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu)
369 (length calc-keypad-menus))) 557 (length calc-keypad-menus)))
370 (not (symbol-value (nth calc-keypad-menu calc-keypad-menus))))) 558 (not (symbol-value (nth calc-keypad-menu calc-keypad-menus)))))
371 (calc-keypad-redraw)) 559 (calc-keypad-redraw))
372 560
373 (defun calc-keypad-menu-back () 561 (defun calc-keypad-menu-back ()
374 (interactive) 562 (interactive)
375 (or (eq major-mode 'calc-keypad) 563 (or (eq major-mode 'calc-keypad-mode)
376 (error "Must be in *Calc Keypad* buffer for this command")) 564 (error "Must be in *Calc Keypad* buffer for this command"))
377 (while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu 565 (while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu
378 (length calc-keypad-menus))) 566 (length calc-keypad-menus)))
379 (length calc-keypad-menus))) 567 (length calc-keypad-menus)))
380 (not (symbol-value (nth calc-keypad-menu calc-keypad-menus))))) 568 (not (symbol-value (nth calc-keypad-menu calc-keypad-menus)))))
389 (setq calc-keypad-input "RCL")) 577 (setq calc-keypad-input "RCL"))
390 578
391 (defun calc-pack-interval (mode) 579 (defun calc-pack-interval (mode)
392 (interactive "p") 580 (interactive "p")
393 (if (or (< mode 0) (> mode 3)) 581 (if (or (< mode 0) (> mode 3))
394 (error "Open/close code should be in the range from 0 to 3.")) 582 (error "Open/close code should be in the range from 0 to 3"))
395 (calc-pack (- -6 mode))) 583 (calc-pack (- -6 mode)))
396 584
397 (defun calc-keypad-execute () 585 (defun calc-keypad-execute ()
398 (interactive) 586 (interactive)
399 (let* ((prompt "Calc keystrokes: ") 587 (let* ((prompt "Calc keystrokes: ")
422 (if (commandp cmd) 610 (if (commandp cmd)
423 (command-execute cmd) 611 (command-execute cmd)
424 (error "Not a Calc command: %s" (key-description keys))))) 612 (error "Not a Calc command: %s" (key-description keys)))))
425 613
426 614
427 ;;; |----+----+----+----+----+----|
428 ;;; | ENTER |+/- |EEX |UNDO| <- |
429 ;;; |-----+---+-+--+--+-+---++----|
430 ;;; | INV | 7 | 8 | 9 | / |
431 ;;; |-----+-----+-----+-----+-----|
432 ;;; | HYP | 4 | 5 | 6 | * |
433 ;;; |-----+-----+-----+-----+-----|
434 ;;; |EXEC | 1 | 2 | 3 | - |
435 ;;; |-----+-----+-----+-----+-----|
436 ;;; | OFF | 0 | . | PI | + |
437 ;;; |-----+-----+-----+-----+-----|
438
439 (defvar calc-keypad-layout
440 '( ( ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over )
441 ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over )
442 ( "+/-" calc-change-sign calc-inv (progn -4 calc-pack) )
443 ( "EEX" ("e") (progn calc-num-prefix calc-pack-interval)
444 (progn -5 calc-pack) )
445 ( "UNDO" calc-undo calc-redo calc-last-args )
446 ( "<-" calc-pop (progn 0 calc-pop)
447 (progn calc-num-prefix calc-pop) ) )
448 ( ( "INV" calc-inverse )
449 ( "7" ("7") calc-round )
450 ( "8" ("8") (progn 2 calc-clean-num) )
451 ( "9" ("9") calc-float )
452 ( "/" calc-divide (progn calc-inverse calc-power) ) )
453 ( ( "HYP" calc-hyperbolic )
454 ( "4" ("4") calc-ln calc-log10 )
455 ( "5" ("5") calc-exp calc-exp10 )
456 ( "6" ("6") calc-abs )
457 ( "*" calc-times calc-power ) )
458 ( ( "EXEC" calc-keypad-execute )
459 ( "1" ("1") calc-arcsin calc-sin )
460 ( "2" ("2") calc-arccos calc-cos )
461 ( "3" ("3") calc-arctan calc-tan )
462 ( "-" calc-minus calc-conj ) )
463 ( ( "OFF" calc-keypad-off )
464 ( "0" ("0") calc-imaginary )
465 ( "." (".") calc-precision )
466 ( "PI" calc-pi )
467 ( "+" calc-plus calc-sqrt ) ) ))
468
469 (defvar calc-keypad-menus '( calc-keypad-math-menu
470 calc-keypad-funcs-menu
471 calc-keypad-binary-menu
472 calc-keypad-vector-menu
473 calc-keypad-modes-menu
474 calc-keypad-user-menu ) )
475
476 ;;; |----+----+----+----+----+----|
477 ;;; |FLR |CEIL|RND |TRNC|CLN2|FLT |
478 ;;; |----+----+----+----+----+----|
479 ;;; | LN |EXP | |ABS |IDIV|MOD |
480 ;;; |----+----+----+----+----+----|
481 ;;; |SIN |COS |TAN |SQRT|y^x |1/x |
482
483 (defvar calc-keypad-math-menu
484 '( ( ( "FLR" calc-floor )
485 ( "CEIL" calc-ceiling )
486 ( "RND" calc-round )
487 ( "TRNC" calc-trunc )
488 ( "CLN2" (progn 2 calc-clean-num) )
489 ( "FLT" calc-float ) )
490 ( ( "LN" calc-ln )
491 ( "EXP" calc-exp )
492 ( "" nil )
493 ( "ABS" calc-abs )
494 ( "IDIV" calc-idiv )
495 ( "MOD" calc-mod ) )
496 ( ( "SIN" calc-sin )
497 ( "COS" calc-cos )
498 ( "TAN" calc-tan )
499 ( "SQRT" calc-sqrt )
500 ( "y^x" calc-power )
501 ( "1/x" calc-inv ) ) ))
502
503 ;;; |----+----+----+----+----+----|
504 ;;; |IGAM|BETA|IBET|ERF |BESJ|BESY|
505 ;;; |----+----+----+----+----+----|
506 ;;; |IMAG|CONJ| RE |ATN2|RAND|RAGN|
507 ;;; |----+----+----+----+----+----|
508 ;;; |GCD |FACT|DFCT|BNOM|PERM|NXTP|
509
510 (defvar calc-keypad-funcs-menu
511 '( ( ( "IGAM" calc-inc-gamma )
512 ( "BETA" calc-beta )
513 ( "IBET" calc-inc-beta )
514 ( "ERF" calc-erf )
515 ( "BESJ" calc-bessel-J )
516 ( "BESY" calc-bessel-Y ) )
517 ( ( "IMAG" calc-imaginary )
518 ( "CONJ" calc-conj )
519 ( "RE" calc-re calc-im )
520 ( "ATN2" calc-arctan2 )
521 ( "RAND" calc-random )
522 ( "RAGN" calc-random-again ) )
523 ( ( "GCD" calc-gcd calc-lcm )
524 ( "FACT" calc-factorial calc-gamma )
525 ( "DFCT" calc-double-factorial )
526 ( "BNOM" calc-choose )
527 ( "PERM" calc-perm )
528 ( "NXTP" calc-next-prime calc-prev-prime ) ) ))
529
530 ;;; |----+----+----+----+----+----|
531 ;;; |AND | OR |XOR |NOT |LSH |RSH |
532 ;;; |----+----+----+----+----+----|
533 ;;; |DEC |HEX |OCT |BIN |WSIZ|ARSH|
534 ;;; |----+----+----+----+----+----|
535 ;;; | A | B | C | D | E | F |
536
537 (defvar calc-keypad-binary-menu
538 '( ( ( "AND" calc-and calc-diff )
539 ( "OR" calc-or )
540 ( "XOR" calc-xor )
541 ( "NOT" calc-not calc-clip )
542 ( "LSH" calc-lshift-binary calc-rotate-binary )
543 ( "RSH" calc-rshift-binary ) )
544 ( ( "DEC" calc-decimal-radix )
545 ( "HEX" calc-hex-radix )
546 ( "OCT" calc-octal-radix )
547 ( "BIN" calc-binary-radix )
548 ( "WSIZ" calc-word-size )
549 ( "ARSH" calc-rshift-arith ) )
550 ( ( "A" ("A") )
551 ( "B" ("B") )
552 ( "C" ("C") )
553 ( "D" ("D") )
554 ( "E" ("E") )
555 ( "F" ("F") ) ) ))
556
557 ;;; |----+----+----+----+----+----|
558 ;;; |SUM |PROD|MAX |MAP*|MAP^|MAP$|
559 ;;; |----+----+----+----+----+----|
560 ;;; |INV |DET |TRN |IDNT|CRSS|"x" |
561 ;;; |----+----+----+----+----+----|
562 ;;; |PACK|UNPK|INDX|BLD |LEN |... |
563
564 (defvar calc-keypad-vector-menu
565 '( ( ( "SUM" calc-vector-sum calc-vector-alt-sum calc-vector-mean )
566 ( "PROD" calc-vector-product nil calc-vector-sdev )
567 ( "MAX" calc-vector-max calc-vector-min calc-vector-median )
568 ( "MAP*" (lambda () (interactive)
569 (calc-map '(2 calcFunc-mul "*"))) )
570 ( "MAP^" (lambda () (interactive)
571 (calc-map '(2 calcFunc-pow "^"))) )
572 ( "MAP$" calc-map-stack ) )
573 ( ( "MINV" calc-inv )
574 ( "MDET" calc-mdet )
575 ( "MTRN" calc-transpose calc-conj-transpose )
576 ( "IDNT" (progn calc-num-prefix calc-ident) )
577 ( "CRSS" calc-cross )
578 ( "\"x\"" "\excalc-algebraic-entry\rx\r"
579 "\excalc-algebraic-entry\ry\r"
580 "\excalc-algebraic-entry\rz\r"
581 "\excalc-algebraic-entry\rt\r") )
582 ( ( "PACK" calc-pack )
583 ( "UNPK" calc-unpack )
584 ( "INDX" (progn calc-num-prefix calc-index) "\C-u\excalc-index\r" )
585 ( "BLD" (progn calc-num-prefix calc-build-vector) )
586 ( "LEN" calc-vlength )
587 ( "..." calc-full-vectors ) ) ))
588
589 ;;; |----+----+----+----+----+----|
590 ;;; |FLT |FIX |SCI |ENG |GRP | |
591 ;;; |----+----+----+----+----+----|
592 ;;; |RAD |DEG |FRAC|POLR|SYMB|PREC|
593 ;;; |----+----+----+----+----+----|
594 ;;; |SWAP|RLL3|RLL4|OVER|STO |RCL |
595
596 (defvar calc-keypad-modes-menu
597 '( ( ( "FLT" calc-normal-notation
598 (progn calc-num-prefix calc-normal-notation) )
599 ( "FIX" (progn 2 calc-fix-notation)
600 (progn calc-num-prefix calc-fix-notation) )
601 ( "SCI" calc-sci-notation
602 (progn calc-num-prefix calc-sci-notation) )
603 ( "ENG" calc-eng-notation
604 (progn calc-num-prefix calc-eng-notation) )
605 ( "GRP" calc-group-digits "\C-u-3\excalc-group-digits\r" )
606 ( "" nil ) )
607 ( ( "RAD" calc-radians-mode )
608 ( "DEG" calc-degrees-mode )
609 ( "FRAC" calc-frac-mode )
610 ( "POLR" calc-polar-mode )
611 ( "SYMB" calc-symbolic-mode )
612 ( "PREC" calc-precision ) )
613 ( ( "SWAP" calc-roll-down )
614 ( "RLL3" (progn 3 calc-roll-up) (progn 3 calc-roll-down) )
615 ( "RLL4" (progn 4 calc-roll-up) (progn 4 calc-roll-down) )
616 ( "OVER" calc-over )
617 ( "STO" calc-keypad-store )
618 ( "RCL" calc-keypad-recall ) ) ))
619
620 ;;; calc-keypd.el ends here 615 ;;; calc-keypd.el ends here