fx-5800P のキーコード 【修正あり】

【2013/11/3 修正】
fx-5800Pのキーコード取得プログラムのソースに、1行抜けがあったので、それを修正。同時に、若干のスリム化をした。 お詫びして以下に修正を加える。

[2015/12/07 修正]
Casio Basicを使いこなす前に書いた記事だが、その後多くのプログラムを書いて Getkeyコマンドの有用性が分かってきたので、それに伴う修正を行った。



パソコンのプログラミング経験者は、キーボードのキー1つひとつに、固有の番号が割り当てられていることをご存じだろう。
この番号をキーコードと言う。

fx-5800P-3 

カシオプログラム関数電卓 FX-5800P-N

fx-5800Pもプログラミングでキーコードを使えるようになっている。
特定のキーが押されたかどうかを監視することができるわけだ。

fx-5800Pの専用プログラミング言語には、Getkey と言うコマンドが用意されている。

Getkeyコマンド
・引 数:なし
・戻り値:取得したキーコード
・動 作:Getkeyが実行された時、最後に押されたキーのキーコードを返す。何も押されていない場合は0を返す。

なお、[AC/ON]キーは例外で、それ以外の全てのキー(49個)のキーコードを取得できる。


直前に押されたキーのコードを取得することから、パソコンと同様に、キーバッファからキーコードを取得するようになっているのだろう。

※ fx-5800Pの取扱説明書:以下からPDFファイルをダウンロードできる
http://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,"
:QUIT"
Lbl 0
Do
Getkey→K
LpWhile K=0
Cls
Locate 1,1,"KEYCODE =   "
Locate 11,1,K
Goto 0

================================


これを実行すると、

----------------
  GET KEYCODE

   HIT ANY KEY
     :QUIT
----------------

と、プログラムの説明を表示。

ここで、いきなり好きなキー(調べたいキー)を押す。

例えば、[DEL]キーを押すと、

-------------------
KEYCODE = 34    ■
    HIT ANY KEY
            :QUIT
-------------------

と表示される。

ここで表示されているキーコード34は、動作開始で押した[DEL}キーのキーコードだ。

さらに、好きなキーを押すと、そのキーコードが次々に表示される。 結構重宝している。




keywords: fx-5800PGetkeyコマンドキーコード, keycodeプログラミングプログラム関数電卓

リンク集 | ブログ内マップ
 
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR