1 |
;; Calculator for GNU Emacs, part II [calc-keypd.el] |
;;; calc-keypd.el --- mouse-capable keypad input for Calc |
2 |
|
|
3 |
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. |
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. |
4 |
;; Written by Dave Gillespie, daveg@synaptics.com. |
|
5 |
|
;; Author: David Gillespie <daveg@synaptics.com> |
6 |
|
;; Maintainer: Colin Walters <walters@debian.org> |
7 |
|
|
8 |
;; This file is part of GNU Emacs. |
;; This file is part of GNU Emacs. |
9 |
|
|
22 |
;; file named COPYING. Among other things, the copyright notice |
;; file named COPYING. Among other things, the copyright notice |
23 |
;; and this notice must be preserved on all copies. |
;; and this notice must be preserved on all copies. |
24 |
|
|
25 |
|
;;; Commentary: |
26 |
|
|
27 |
|
;;; Code: |
28 |
|
|
29 |
|
|
30 |
;; This file is autoloaded from calc-ext.el. |
;; This file is autoloaded from calc-ext.el. |
35 |
(defun calc-Need-calc-keypd () nil) |
(defun calc-Need-calc-keypd () nil) |
36 |
|
|
37 |
|
|
|
|
|
|
;;; Pictorial interface to Calc using a mouse. |
|
|
|
|
38 |
(defvar calc-keypad-buffer nil) |
(defvar calc-keypad-buffer nil) |
39 |
(defvar calc-keypad-menu 0) |
(defvar calc-keypad-menu 0) |
40 |
(defvar calc-keypad-full-layout nil) |
(defvar calc-keypad-full-layout nil) |
42 |
(defvar calc-keypad-prev-input nil) |
(defvar calc-keypad-prev-input nil) |
43 |
(defvar calc-keypad-said-hello nil) |
(defvar calc-keypad-said-hello nil) |
44 |
|
|
45 |
(defvar calc-keypad-map nil) |
;;; |----+----+----+----+----+----| |
46 |
(unless calc-keypad-map |
;;; | ENTER |+/- |EEX |UNDO| <- | |
47 |
(let ((map (make-sparse-keymap))) |
;;; |-----+---+-+--+--+-+---++----| |
48 |
(define-key map " " 'calc-keypad-press) |
;;; | INV | 7 | 8 | 9 | / | |
49 |
(define-key map (kbd "RET") 'calc-keypad-press) |
;;; |-----+-----+-----+-----+-----| |
50 |
(define-key map (kbd "TAB") 'calc-keypad-menu) |
;;; | HYP | 4 | 5 | 6 | * | |
51 |
(define-key map "q" 'calc-keypad-off) |
;;; |-----+-----+-----+-----+-----| |
52 |
(define-key map [(mouse-3)] 'calc-keypad-right-click) |
;;; |EXEC | 1 | 2 | 3 | - | |
53 |
(define-key map [(mouse-2)] 'calc-keypad-middle-click) |
;;; |-----+-----+-----+-----+-----| |
54 |
(define-key map [(mouse-1)] 'calc-keypad-left-click) |
;;; | OFF | 0 | . | PI | + | |
55 |
(setq calc-keypad-map map))) |
;;; |-----+-----+-----+-----+-----| |
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)) |
248 |
|
|
249 |
(defun calc-do-keypad (&optional full-display interactive) |
(defun calc-do-keypad (&optional full-display interactive) |
250 |
(calc-create-buffer) |
(calc-create-buffer) |
251 |
(let ((calcbuf (current-buffer))) |
(let ((calcbuf (current-buffer))) |
252 |
(unless (and calc-keypad-buffer |
(unless (bufferp calc-keypad-buffer) |
253 |
(buffer-name calc-keypad-buffer)) |
(set-buffer (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*"))) |
254 |
(setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*")) |
(calc-keypad-mode) |
|
(set-buffer calc-keypad-buffer) |
|
|
(use-local-map calc-keypad-map) |
|
|
(setq major-mode 'calc-keypad) |
|
|
(setq mode-name "Calculator") |
|
|
(put 'calc-keypad 'mode-class 'special) |
|
|
(make-local-variable 'calc-main-buffer) |
|
255 |
(setq calc-main-buffer calcbuf) |
(setq calc-main-buffer calcbuf) |
256 |
(calc-keypad-redraw) |
(calc-keypad-redraw) |
257 |
(calc-trail-buffer)) |
(calc-trail-buffer)) |
303 |
(split-window win (- (window-height win) height 1)) |
(split-window win (- (window-height win) height 1)) |
304 |
(set-window-buffer win calcbuf)) |
(set-window-buffer win calcbuf)) |
305 |
(select-window old-win) |
(select-window old-win) |
306 |
(message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons.") |
(message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons") |
307 |
(run-hooks 'calc-keypad-start-hook) |
(run-hooks 'calc-keypad-start-hook) |
308 |
(and calc-keypad-said-hello interactive |
(and calc-keypad-said-hello interactive |
309 |
(progn |
(progn |
382 |
|
|
383 |
(defun calc-keypad-press () |
(defun calc-keypad-press () |
384 |
(interactive) |
(interactive) |
385 |
(or (eq major-mode 'calc-keypad) |
(unless (eq major-mode 'calc-keypad-mode) |
386 |
(error "Must be in *Calc Keypad* buffer for this command")) |
(error "Must be in *Calc Keypad* buffer for this command")) |
387 |
(let* ((row (save-excursion |
(let* ((row (save-excursion |
388 |
(beginning-of-line) |
(beginning-of-line) |
389 |
(count-lines (point-min) (point)))) |
(count-lines (point-min) (point)))) |
390 |
(y (/ row 2)) |
(y (/ row 2)) |
391 |
(x (/ (current-column) (if (>= y 4) 6 5))) |
(x (/ (current-column) (if (>= y 4) 6 5))) |
392 |
radix frac inv |
radix frac inv |
393 |
(hyp (save-excursion |
(hyp (with-current-buffer calc-main-buffer |
|
(set-buffer calc-main-buffer) |
|
394 |
(setq radix calc-number-radix |
(setq radix calc-number-radix |
395 |
frac calc-prefer-frac |
frac calc-prefer-frac |
396 |
inv calc-inverse-flag) |
inv calc-inverse-flag) |
551 |
|
|
552 |
(defun calc-keypad-menu () |
(defun calc-keypad-menu () |
553 |
(interactive) |
(interactive) |
554 |
(unless (eq major-mode 'calc-keypad) |
(unless (eq major-mode 'calc-keypad-mode) |
555 |
(error "Must be in *Calc Keypad* buffer for this command")) |
(error "Must be in *Calc Keypad* buffer for this command")) |
556 |
(while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu) |
(while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu) |
557 |
(length calc-keypad-menus))) |
(length calc-keypad-menus))) |
560 |
|
|
561 |
(defun calc-keypad-menu-back () |
(defun calc-keypad-menu-back () |
562 |
(interactive) |
(interactive) |
563 |
(or (eq major-mode 'calc-keypad) |
(or (eq major-mode 'calc-keypad-mode) |
564 |
(error "Must be in *Calc Keypad* buffer for this command")) |
(error "Must be in *Calc Keypad* buffer for this command")) |
565 |
(while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu |
(while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu |
566 |
(length calc-keypad-menus))) |
(length calc-keypad-menus))) |
579 |
(defun calc-pack-interval (mode) |
(defun calc-pack-interval (mode) |
580 |
(interactive "p") |
(interactive "p") |
581 |
(if (or (< mode 0) (> mode 3)) |
(if (or (< mode 0) (> mode 3)) |
582 |
(error "Open/close code should be in the range from 0 to 3.")) |
(error "Open/close code should be in the range from 0 to 3")) |
583 |
(calc-pack (- -6 mode))) |
(calc-pack (- -6 mode))) |
584 |
|
|
585 |
(defun calc-keypad-execute () |
(defun calc-keypad-execute () |
612 |
(error "Not a Calc command: %s" (key-description keys))))) |
(error "Not a Calc command: %s" (key-description keys))))) |
613 |
|
|
614 |
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; | ENTER |+/- |EEX |UNDO| <- | |
|
|
;;; |-----+---+-+--+--+-+---++----| |
|
|
;;; | INV | 7 | 8 | 9 | / | |
|
|
;;; |-----+-----+-----+-----+-----| |
|
|
;;; | HYP | 4 | 5 | 6 | * | |
|
|
;;; |-----+-----+-----+-----+-----| |
|
|
;;; |EXEC | 1 | 2 | 3 | - | |
|
|
;;; |-----+-----+-----+-----+-----| |
|
|
;;; | OFF | 0 | . | PI | + | |
|
|
;;; |-----+-----+-----+-----+-----| |
|
|
|
|
|
(defvar calc-keypad-layout |
|
|
'( ( ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) |
|
|
( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) |
|
|
( "+/-" calc-change-sign calc-inv (progn -4 calc-pack) ) |
|
|
( "EEX" ("e") (progn calc-num-prefix calc-pack-interval) |
|
|
(progn -5 calc-pack) ) |
|
|
( "UNDO" calc-undo calc-redo calc-last-args ) |
|
|
( "<-" calc-pop (progn 0 calc-pop) |
|
|
(progn calc-num-prefix calc-pop) ) ) |
|
|
( ( "INV" calc-inverse ) |
|
|
( "7" ("7") calc-round ) |
|
|
( "8" ("8") (progn 2 calc-clean-num) ) |
|
|
( "9" ("9") calc-float ) |
|
|
( "/" calc-divide (progn calc-inverse calc-power) ) ) |
|
|
( ( "HYP" calc-hyperbolic ) |
|
|
( "4" ("4") calc-ln calc-log10 ) |
|
|
( "5" ("5") calc-exp calc-exp10 ) |
|
|
( "6" ("6") calc-abs ) |
|
|
( "*" calc-times calc-power ) ) |
|
|
( ( "EXEC" calc-keypad-execute ) |
|
|
( "1" ("1") calc-arcsin calc-sin ) |
|
|
( "2" ("2") calc-arccos calc-cos ) |
|
|
( "3" ("3") calc-arctan calc-tan ) |
|
|
( "-" calc-minus calc-conj ) ) |
|
|
( ( "OFF" calc-keypad-off ) |
|
|
( "0" ("0") calc-imaginary ) |
|
|
( "." (".") calc-precision ) |
|
|
( "PI" calc-pi ) |
|
|
( "+" calc-plus calc-sqrt ) ) )) |
|
|
|
|
|
(defvar calc-keypad-menus '( calc-keypad-math-menu |
|
|
calc-keypad-funcs-menu |
|
|
calc-keypad-binary-menu |
|
|
calc-keypad-vector-menu |
|
|
calc-keypad-modes-menu |
|
|
calc-keypad-user-menu ) ) |
|
|
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |FLR |CEIL|RND |TRNC|CLN2|FLT | |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; | LN |EXP | |ABS |IDIV|MOD | |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |SIN |COS |TAN |SQRT|y^x |1/x | |
|
|
|
|
|
(defvar calc-keypad-math-menu |
|
|
'( ( ( "FLR" calc-floor ) |
|
|
( "CEIL" calc-ceiling ) |
|
|
( "RND" calc-round ) |
|
|
( "TRNC" calc-trunc ) |
|
|
( "CLN2" (progn 2 calc-clean-num) ) |
|
|
( "FLT" calc-float ) ) |
|
|
( ( "LN" calc-ln ) |
|
|
( "EXP" calc-exp ) |
|
|
( "" nil ) |
|
|
( "ABS" calc-abs ) |
|
|
( "IDIV" calc-idiv ) |
|
|
( "MOD" calc-mod ) ) |
|
|
( ( "SIN" calc-sin ) |
|
|
( "COS" calc-cos ) |
|
|
( "TAN" calc-tan ) |
|
|
( "SQRT" calc-sqrt ) |
|
|
( "y^x" calc-power ) |
|
|
( "1/x" calc-inv ) ) )) |
|
|
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |IGAM|BETA|IBET|ERF |BESJ|BESY| |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |IMAG|CONJ| RE |ATN2|RAND|RAGN| |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |GCD |FACT|DFCT|BNOM|PERM|NXTP| |
|
|
|
|
|
(defvar calc-keypad-funcs-menu |
|
|
'( ( ( "IGAM" calc-inc-gamma ) |
|
|
( "BETA" calc-beta ) |
|
|
( "IBET" calc-inc-beta ) |
|
|
( "ERF" calc-erf ) |
|
|
( "BESJ" calc-bessel-J ) |
|
|
( "BESY" calc-bessel-Y ) ) |
|
|
( ( "IMAG" calc-imaginary ) |
|
|
( "CONJ" calc-conj ) |
|
|
( "RE" calc-re calc-im ) |
|
|
( "ATN2" calc-arctan2 ) |
|
|
( "RAND" calc-random ) |
|
|
( "RAGN" calc-random-again ) ) |
|
|
( ( "GCD" calc-gcd calc-lcm ) |
|
|
( "FACT" calc-factorial calc-gamma ) |
|
|
( "DFCT" calc-double-factorial ) |
|
|
( "BNOM" calc-choose ) |
|
|
( "PERM" calc-perm ) |
|
|
( "NXTP" calc-next-prime calc-prev-prime ) ) )) |
|
|
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |AND | OR |XOR |NOT |LSH |RSH | |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |DEC |HEX |OCT |BIN |WSIZ|ARSH| |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; | A | B | C | D | E | F | |
|
|
|
|
|
(defvar calc-keypad-binary-menu |
|
|
'( ( ( "AND" calc-and calc-diff ) |
|
|
( "OR" calc-or ) |
|
|
( "XOR" calc-xor ) |
|
|
( "NOT" calc-not calc-clip ) |
|
|
( "LSH" calc-lshift-binary calc-rotate-binary ) |
|
|
( "RSH" calc-rshift-binary ) ) |
|
|
( ( "DEC" calc-decimal-radix ) |
|
|
( "HEX" calc-hex-radix ) |
|
|
( "OCT" calc-octal-radix ) |
|
|
( "BIN" calc-binary-radix ) |
|
|
( "WSIZ" calc-word-size ) |
|
|
( "ARSH" calc-rshift-arith ) ) |
|
|
( ( "A" ("A") ) |
|
|
( "B" ("B") ) |
|
|
( "C" ("C") ) |
|
|
( "D" ("D") ) |
|
|
( "E" ("E") ) |
|
|
( "F" ("F") ) ) )) |
|
|
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |SUM |PROD|MAX |MAP*|MAP^|MAP$| |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |INV |DET |TRN |IDNT|CRSS|"x" | |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |PACK|UNPK|INDX|BLD |LEN |... | |
|
|
|
|
|
(defvar calc-keypad-vector-menu |
|
|
'( ( ( "SUM" calc-vector-sum calc-vector-alt-sum calc-vector-mean ) |
|
|
( "PROD" calc-vector-product nil calc-vector-sdev ) |
|
|
( "MAX" calc-vector-max calc-vector-min calc-vector-median ) |
|
|
( "MAP*" (lambda () (interactive) |
|
|
(calc-map '(2 calcFunc-mul "*"))) ) |
|
|
( "MAP^" (lambda () (interactive) |
|
|
(calc-map '(2 calcFunc-pow "^"))) ) |
|
|
( "MAP$" calc-map-stack ) ) |
|
|
( ( "MINV" calc-inv ) |
|
|
( "MDET" calc-mdet ) |
|
|
( "MTRN" calc-transpose calc-conj-transpose ) |
|
|
( "IDNT" (progn calc-num-prefix calc-ident) ) |
|
|
( "CRSS" calc-cross ) |
|
|
( "\"x\"" "\excalc-algebraic-entry\rx\r" |
|
|
"\excalc-algebraic-entry\ry\r" |
|
|
"\excalc-algebraic-entry\rz\r" |
|
|
"\excalc-algebraic-entry\rt\r") ) |
|
|
( ( "PACK" calc-pack ) |
|
|
( "UNPK" calc-unpack ) |
|
|
( "INDX" (progn calc-num-prefix calc-index) "\C-u\excalc-index\r" ) |
|
|
( "BLD" (progn calc-num-prefix calc-build-vector) ) |
|
|
( "LEN" calc-vlength ) |
|
|
( "..." calc-full-vectors ) ) )) |
|
|
|
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |FLT |FIX |SCI |ENG |GRP | | |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |RAD |DEG |FRAC|POLR|SYMB|PREC| |
|
|
;;; |----+----+----+----+----+----| |
|
|
;;; |SWAP|RLL3|RLL4|OVER|STO |RCL | |
|
|
|
|
|
(defvar calc-keypad-modes-menu |
|
|
'( ( ( "FLT" calc-normal-notation |
|
|
(progn calc-num-prefix calc-normal-notation) ) |
|
|
( "FIX" (progn 2 calc-fix-notation) |
|
|
(progn calc-num-prefix calc-fix-notation) ) |
|
|
( "SCI" calc-sci-notation |
|
|
(progn calc-num-prefix calc-sci-notation) ) |
|
|
( "ENG" calc-eng-notation |
|
|
(progn calc-num-prefix calc-eng-notation) ) |
|
|
( "GRP" calc-group-digits "\C-u-3\excalc-group-digits\r" ) |
|
|
( "" nil ) ) |
|
|
( ( "RAD" calc-radians-mode ) |
|
|
( "DEG" calc-degrees-mode ) |
|
|
( "FRAC" calc-frac-mode ) |
|
|
( "POLR" calc-polar-mode ) |
|
|
( "SYMB" calc-symbolic-mode ) |
|
|
( "PREC" calc-precision ) ) |
|
|
( ( "SWAP" calc-roll-down ) |
|
|
( "RLL3" (progn 3 calc-roll-up) (progn 3 calc-roll-down) ) |
|
|
( "RLL4" (progn 4 calc-roll-up) (progn 4 calc-roll-down) ) |
|
|
( "OVER" calc-over ) |
|
|
( "STO" calc-keypad-store ) |
|
|
( "RCL" calc-keypad-recall ) ) )) |
|
|
|
|
615 |
;;; calc-keypd.el ends here |
;;; calc-keypd.el ends here |