XCALC(1)

名前
xcalc - X 用の関数電卓

書式
xcalc [-stipple] [-rpn] [-toolkitoption...]

説明
xcalc は TI-30 や HP-10C をエミュレートできる関数電卓のデスクトップアクセサ リである。

オプション

xcalc には、X ツールキットの標準コマンドラインオプションに加えて、 以下のオプションを指定できる:

-stipple
    このオプションを指定すると、電卓の背景は前景色と背景色のスティプルを用 いて描画される。モノクロディスプレイでは見栄えが良くなる。

-rpn
    このオプションを指定すると逆ポーランド記法が使われる。このモードにおい ては、電卓の外観と動作は HP-100 のようになる。このオプションを指定しな ければ、xcalc は TI-30 をエミュレートする。

操作方法

電卓のポインタ操作 電卓の操作はポインタのボタン1と(場合によっては)キーボードを使って行う ことができる。 共通の電卓の操作にはキーボードアクセラレータがある。 例えば、アプリケーションを終了するためには、ポインタボタン3でAC キー (TI モード)または ON キー(HP モード)をクリックする。

電卓のキー操作(TI モード): 数値キー、+/- キー、+, -, *, /, = キーは文字通りの動作を行う。ただし、 演算子の優先順位は無視される点に注意すること。従って、"3+4*5=" と入力 した結果は "35" ではなく "21" である。これを防ぐためには括弧を使う。例 えば、"(1+2+3)*(4+5+6)=" の結果は "6*15=90" となる。

電卓の表示部分の数値は全てセレクションの対象にすることができ、計算結果 を文書に貼り付けることができる。

各機能に対応するアクション手続きを以下に示す。これらは電卓をカスタマイ ズしようとするときに便利である。 全ての数字キーに対するアクションは digit(n) である。 ここで n は数字キーに対応する数値で、0..9 となる。

1/x 表示部の数値を逆数に置き換える。 対応するアクション手続きはreciprocal()である。

x^2 表示部の数値を2乗する。 対応するアクション手続きはsquare()である。

SQRT
    表示部の数値の平方根を取る。 対応するアクション手続きはsquareRoot()である。

CE/C
    最初に押したときは計算機の状態をクリアせずに表示部の数値だけをクリアす る。これを使って数値を入れ間違えた際に再入力をすることができる。 再び押したときは状態もクリアする。 TI の場合の対応するアクション手続きはclear()である。

AC  表示、状態、メモリをクリアする。このボタンをポインタのボタン3で押すと、 電卓が終了する。 状態をクリアするアクション手続きは off() であり、終了するアクショ ン手続きは quit() である。

INV 機能逆転。詳しくは個別の機能キーの項目を参照すること。 対応するアクション手続きは inverse() である。

sin 表示部の数値のサイン(正弦)を計算する。この数値は現在の DRG モードで解 釈される(後述の DRG を参照すること)。機能逆転時にはアークサイン(逆正弦) が計算される。 対応するアクション手続きは sine() である。

cos コサイン(余弦)を計算する。機能逆転時にはアークコサイン(逆余弦)を計算す る。 対応するアクション手続きは cosine() である。

tan タンジェント(正接)を計算する。機能逆転時にはアークタンジェント(逆正接) を計算する。 対応するアクション手続きは tangent() である。

DRG DRG モードを変更する。このモードは電卓の「液晶」表示の下部に 'DEG', 'RAD', 'GRAD' で示される。 'DEG' モードでは、表示部の数値は弧度(degree)として扱われる。'RAD' モー ドでは、数値はラジアンとして扱われる。'GRAD' モードでは、数値はグラジ アンとして扱われる。機能逆転時には、DRG キーは弧度をラジアンにラジアン をグラジアンに、グラジアンを弧度に変換する。例: 電卓を 'DEG' モードに し、"45 INV DRG" と入力する。このとき表示は ".785398" のようになる。こ の数値は45度をラジアンに変換したものである。

e   定数 'e'(2.7182818...)である。 対応するアクション手続きは e() である。

EE  指数の入力に使う。例えば、"-2.3E-4" を得るには "2 . 3 +/- EE 4 +/-" と入力する。

log 表示部の数値の対数(底は10)を計算する。機能逆転時には、表示部の数値で 10 の乗数を取る。 例えば、"3 INV log" は "1000" となる。 対応するアクション手続きは logarithm() である。

ln  表示部の数値の対数(底はe)を計算する。機能逆転時には、表示部の数値で "e" の乗数を取る。例えば、"e ln" は "1" となる。 対応するアクション手続きは naturalLog() である。

y^x 左の数値の右の数値によるべき乗を計算する。例えば、"2 y^x 3 =" は "8" となる(これは2の3乗である)。もう1つ例を挙げると、 "(1+2+3) y^x (1+2) =" は "6 y^x 3" と等しく、"216" となる。 対応するアクション手続きは power() である。

PI  定数の円周率である(3.1415927....)。 対応するアクション手続きは pi() である。

x!  表示部の数値の階乗を計算する。表示される数値は0-500の整数でなければな らないが、数学ライブラリによってはそれより小さい値でオーバフローする かもしれない。 対応するアクション手続きは factorial() である。

(   左括弧。TI 電卓のとき、対応するアクション手続きは leftParen() で ある。

)   右括弧。TI 電卓のとき、対応するアクション手続きは rightParen() である。

/   除算。対応するアクション手続きは divide() である。

*   乗算。対応するアクション手続きは multiply() である。

-   減算。対応するアクション手続きは subtract() である。

+   加算。対応するアクション手続きは add() である。

=   計算の実行。TI 固有のアクション手続きは equal() である。

STO 表示部の数値をメモリにコピーする。 対応するアクション手続きは store() である。

RCL メモリから表示部に数値をコピーする。 対応するアクション手続きは recall() である。

SUM メモリの数値を表示部の数値に加える。 対応するアクション手続きは sum() である。

EXC 表示部の数値とメモリの数値を交換する。 対応する TI 電卓において対応する手続きは exchange() である。

+/- 符号を反転させる。対応するアクション手続きは negate() である。

.   小数点。対応するアクション手続きは decimal() である。

電卓のキーの使用方法(RPN モード): 数値キー、CHS (符号反転), +, -, *, /, ENTR キーは文字通りの機能である。 残りのキーの多くは TI モードと同じ機能である。違う部分を以下に述べる。 ENTR キーに対するアクション手続きは enter() である。

<-  これはバックスペースキーであり、数値を間違えて入力したときに使用できる。 このキーを押すと表示部から数値が消される(「バグ」のセクションを参照)。 バックスペースの機能逆転時には X レジスタがクリアされる。 対応するアクション手続きは back() である。

ON  表示、状態、メモリをクリアする。このボタンをポインタのボタン3で押すと、 電卓の電源が切れる(つまり、プログラムが終了する)。 状態をクリアするアクション手続きは off であり、プログラム終了の アクション手続きは quit() である。

INV 関数キーの意味を逆転させる。これは HP の電卓の f キーと思われる が、xcalc はそれぞれのキーにまつわる昔話は表示しない。詳しくは、 個々の関数キーの説明を見ること。

10^x
    スタックの一番上の数値で10をべき乗する。 機能逆転時には、表示部の数値の対数(底は10)を計算する。 対応するアクション手続きは tenpower() である。

e^x スタックの一番上の数値でeをべき乗する。 機能逆転時には、表示部の数値の対数(底はe)を計算する。 対応するアクション手続きは epower() である。

STO スタックの一番上の数値をメモリにコピーする。メモリは10個ある。メモリの 指定は、このキーを押した後に数字キーを押す。

RCL 指定したメモリの数値をスタックにプッシュする。

SUM 指定したメモリの数値をスタックの一番上に追加する。

x:y スタックの上2つの数値、X, Y レジスタを交換する。 対応するアクション手続きは XexchangeY() である。

R v スタックを下方向にずらす。機能逆転時にはスタックを上方向にずらす。 対応するアクション手続きは roll() である。

blank
    これらのキーは HP-10C のプログラミング関数に使われていた。これらの機能 は xcalc では再現されていない。

最後に、追加のアクション手続きが2つある。 これは、ベルをならす bell() と、電卓の「液晶」ディスプレイの数値 全体をカットを行う selection() である。

アクセラレータ

アクセラレータはコマンド入力のショートカットである。xcalc にはサ ンプルのキーボードアクセラレータがいくつかおり、ユーザはアクセラレータ をカスタマイズすることもできる。 xcalc が持っている数値キーのアクセラレータは直観的に正しいはずで ある。 xcalc がメインのキーボードに対して定義しているアクセラレータは以 下である:

	TI キー	HP キー	キーボードアクセラレータ	TI 関数	HP 関数
	SQRT	SQRT	r			squareRoot()	squareRoot()
	AC	ON	スペース			clear()		clear()
	AC	<-	Delete			clear()		back()
	AC	<-	Backspace		clear()		back()
	AC	<-	Control-H		clear()		back()
	AC		Clear			clear()
	AC	ON	q			quit()		quit()
	AC	ON	Control-C		quit()		quit()
	INV	i	i			inverse()		inverse()
	sin	s	s			sine()		sine()
	cos	c	c			cosine()		cosine()
	tan	t	t			tangent()	tangent()
	DRG	DRG	d			degree()		degree()
	e		e			e()
	ln	ln	l			naturalLog()	naturalLog()
	y^x	y^x	^			power()		power()
	PI	PI	p			pi()		pi()
	x!	x!	!			factorial()	factorial()
	(		(			leftParen()
	)		)			rightParen()
	/	/	/			divide()		divide()
	*	*	*			multiply()	multiply()
	-	-	-			subtract()	subtract()
	+	+	+			add()		add()
	=		=			equal()
	0..9	0..9	0..9			digit()		digit()
	.	.	.			decimal()	decimal()
	+/-	CHS	n			negate()		negate()
		x:y	x					XexchangeY()
		ENTR	Return					enter()
		ENTR	Linefeed					enter()

カスタマイズ
アプリケーションクラス名は XCalc である。

xcalc は大きなアプリケーションデフォルトファイルを持つ。このファ イルでは位置、ラベル、電卓のそれぞれのキーの機能が指定されている。 このファイルでは、キーボードアクセラレータを与えるトランスレーションも 定義されている。 これらのリソースはアプリケーションのソースコード内では指定されていない ので、自分専用のアプリケーションデフォルトファイルを書くことによって、 カスタマイズした電卓を作ることができる。このデフォルトファイルでは Athena ウィジェットセットの Command および Form ウィジェットのリソース を使ってボタンのサイズと位置、各ボタンのラベル、各ボタンのキーを指定す る。

電卓の各キーの前景色と背景色は独立に指定することができる。 TI 電卓の場合には、色について昔から使われているリソース指定は次のよう になっている:

XCalc.ti.Command.background:    gray50
XCalc.ti.Command.foreground:    white

ボタン 20, 25, 30, 35, 40 に対しては次の指定がなされている:
XCalc.ti.button20.background:    black
XCalc.ti.button20.foreground:    white

ボタン 22, 23, 24, 27, 28, 29, 32, 33, 34, 37, 38, 39 に対しては次の指 定がなされている:
XCalc.ti.button22.background:    white
XCalc.ti.button22.foreground:    black

ウィジェット階層
xcalc を構成するウィジェットの階層を知っておくと、リソースを指定 する際に便利である。以下の記法においては、インデントで階層構造を表す。 また、ウィジェットのクラス名を先頭に書き、これにウィジェットのインスタ ンス名を続けて書く。

XCalc xcalc
	Form  ti  or  hp    (名前はモードに依存)
		Form  bevel
			Form  screen
				Label  M
				Toggle  LCD
				Label  INV
				Label  DEG
				Label  RAD
				Label  GRAD
				Label  P
		Command  button1
		Command  button2
		Command  button3
(中略)
		Command  button38
		Command  button39
		Command  button40

アプリケーションのリソース

rpn (Class Rpn)
    このオプションを指定すると、rpn モードが使用される。デフォルトでは TI モードが使われる。

stipple (Class Stipple)
    このオプションを指定すると背景がスティプルされる。デフォルト値は、モノ クロディスプレイでは ``on'' であり、カラーディスプレイでは ``off'' で ある。

cursor (Class Cursor)
    ポインタを表すために使うシンボルの名前を指定する。 デフォルト値は ``hand2'' である。

配色
xcalc を TI-30 のような配色にしたければ、次の行を xrdb で読み込むファ イルの #ifdef COLOR セクションに取り込むこと:

*customization: -color

これにより、xcalc は配色カスタマイズ用の app-default ファイル( <XRoot>/lib/X11/app-defaults/XCalc-color)で指定された配色を使う。

関連項目
X(1), xrdb(1), Athena ウィジェットセット

バグ

HP モード: バグレポートによると、5, ENTER, <- というキーシーケンスで表 示がクリアされるはずなのに、実際にはクリアされないということである。

著作権
Copyright ([,]*) X Consortium
権利と許諾に関する正式な声明については、X(1) を参照すること。

著者
John Bradley, University of Pennsylvania
Mark Rosenstein, MIT Project Athena
Donna Converse, MIT X Consortium