fx-5800P のキーコード 【修正あり】
【2013/11/3 修正】
fx-5800Pのキーコード取得プログラムのソースに、1行抜けがあったので、それを修正。同時に、若干のスリム化をした。 お詫びして以下に修正を加える。
[2015/12/07 修正]
Casio Basicを使いこなす前に書いた記事だが、その後多くのプログラムを書いて Getkeyコマンドの有用性が分かってきたので、それに伴う修正を行った。
パソコンのプログラミング経験者は、キーボードのキー1つひとつに、固有の番号が割り当てられていることをご存じだろう。
この番号をキーコードと言う。
カシオプログラム関数電卓 FX-5800P
fx-5800Pもプログラミングでキーコードを使えるようになっている。
特定のキーが押されたかどうかを監視することができるわけだ。
fx-5800Pの専用プログラミング言語には、Getkey と言うコマンドが用意されている。
【Getkeyコマンド】
・引 数:なし
・戻り値:取得したキーコード
・動 作:Getkeyが実行された時、最後に押されたキーのキーコードを返す。何も押されていない場合は0を返す。
なお、[AC/ON]キーは例外で、それ以外の全てのキー(49個)のキーコードを取得できる。
直前に押されたキーのコードを取得することから、パソコンと同様に、キーバッファからキーコードを取得するようになっているのだろう。
※ fx-5800Pの取扱説明書:以下からPDFファイルをダウンロードできる
https://support.casio.jp/manualfile.php?cid=004007004
Getkeyを使う場面
Getkeyが有用なのは、プログラムが何か処理をしている時に押したキーに応じて処理を割り込ませる場合だ。テンキー以外のキーを使うメニュー処理にも有用だ。
そこで、[9]をキー入力してメニュー選択を行うプログラム作ってみる。
試しにGetkeyを使わないプログラムを作ってみると、以下のようになる。
ここでは、[9]を入力した時、入力した数字を表示させることにする。
======================
"INPUT NUMBER"?→K
"THE NUMBER = ":K◢
======================
このプログラムを実行すると、
------------------
INPUT NUMBER ?
------------------
と表示され、「9」を入力すると、
------------------
INPUT NUMBER ?
9
------------------
と表示され、一旦処理が止まる。
ここで、[EXE]キーを押すと、次の処理へ進んで、「入力した内容を表示する」処理が実行される。
------------------
INPUT NUMBER ?
9
THE NUMBER = 9
------------------
Getkeyを使わずに入力命令「?」を使うと、必ずプログラムが一旦停止するので、先へ進むにはどうしても [EXE]キーを押す必要がある。メニュー選択で余計なキー操作が必要だ。それでもテンキーを使ったメニュー処理なら、この方法は簡単ではある。
次に、Getkeyを使って、[9]を押してメニュー選択すると、[9]のキーコードを表示するプログラムを作ってみる。
======================
"INPUT NUMBER ?"
Do
Getkey→K
LpWhile K≠33
"THE NUMBER =":K◢
======================
キーが押されたかどうかを監視するには、Getkeyコマンドとループ処理と組み合わせる必要がある。
Do~LpWhile ループ処理では、キー入力監視を行い、数字キー[9]に相当するキーコードを取得しない限り、ル-プが回り続ける。キーコード33が取得されると、ループを脱出して、次の表示処理へ進む。
プログラムを実行すると、
--------------------
INPUT NUMBER ? ■
--------------------
と表示される。
右端の■は、プログラムが動いていることを示す。つまり、ループが回り続けているわけだ。
ここで、[9]キーを押すと、
------------------
INPUT NUMBER ?
THE NUMBER =
33
------------------
と[9]のキーコードである33が表示された。
Getkeyコマンドを使うと、メニュー選択のために何かキーを押すと、直ちに次の処理を行えることが分かる。さらに、テンキー以外のキーを使うには、Getkey を使うしかない。
キーコード取得プログラム
fx-5800Pの取扱説明書には、各キーのキーコードが記載されている。
Getkeyを利用するプログラムを書いている時、手元に取説が無いことが結構ある(私の場合は、通勤電車で電卓プログラミングを愉しんでいるので、こういうことになってしまう)。
そこで、キーコードを調べて表示するプログラムを作ってみた。
fx-5800P専用
キーコード取得プログラム:2013/12/20 修正
===============================
"Get KEYCODE"
Locate 6,3,"HIT ANY KEY"
Locate 8,4,"
Lbl 0
Do
Getkey→K
LpWhile K=0
Cls
Locate 1,1,"KEYCODE = "
Locate 11,1,K
Goto 0
================================
これを実行すると、
----------------
GET KEYCODE
HIT ANY KEY
----------------
ここで、いきなり好きなキー(調べたいキー)を押す。
例えば、[DEL]キーを押すと、
-------------------
KEYCODE = 34 ■
HIT ANY KEY
-------------------
ここで表示されているキーコード34は、動作開始で押した[DEL}キーのキーコードだ。
さらに、好きなキーを押すと、そのキーコードが次々に表示される。 結構重宝している。
応援クリックをお願いします。励みになるので...
keywords: fx-5800P、Getkeyコマンド、キーコード, keycode、プログラミング、プログラム関数電卓
リンク集 | ブログ内マップ
- 関連記事
-
-
fx-5800P【ゲーム】:Hit&Blow 2018/10/30
-
fx-5800P が大好き、だけど.. 2018/02/25
-
fx-5800P のキーコード 【修正あり】 2015/12/07
-
fx-5800P でピタゴラス数 2014/11/30
-
fx-5800P 素因数分解 - バグ修正と表示変更 2014/11/14
-