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" ではなく "23"
である。
これを防ぐためには括弧を使う。
例えば、"(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(7),
xrdb(1), Athena
ウィジェットセット
HP モード:
バグ報告によると、5,
ENTER, <-
というキーシーケンスで表
示がクリアされるはずなのに、実際にはクリアされないとのことである。
著作権¶
Copyright ([,*) X Consortium
権利と許諾に関する正式な声明については、
X(7) を参照すること。
John Bradley, University of Pennsylvania
Mark Rosenstein, MIT Project Athena
Donna Converse, MIT X Consortium