English help on website



iskeydown( n1 ) 関数(Ver9.24対応版)
目次関数(その他関数)− iskeydown( n1 ) 関数
iskeydown関数は、指定されたキーの状態を取得します。
#f =iskeydown( 'A' );
パラメータ1(数値型)
キーコードを指定します。

パラメータ2(数値型、省略可能)
省略するか0を指定すると、キーが押されているかどうかを取得します。
1 を指定すると、キーのトグル状態を取得します。

返り値(数値型)
キーの状態を返します。


n1にキーコードを入れて呼び出すと、そのキーが押されている場合は 1、そうでない場合は 0 を返します。
主なキーコードは以下の通りです。このキーコードは、inputcharが返す値とは違う値なので注意してください。
Shift    0x10
Ctrl    0x11
Alt    0x12
   0x25
   0x26
   0x27
   0x28
0〜9    0x30〜0x39
A〜Z    0x41〜0x5A
上記にないキーコードは、マクロで調べることができます。
実はこの関数は、Win32APIであるGetKeyState()を呼び出しているだけです。開発者の方は、Win32APIのリファレンスの仮想キーコードの一覧を見るといいです。

この関数を利用すれば、キー割り当てで、たくさんのキーに同じマクロを割り当ててもマクロファイル内で分岐する処理が可能になります。
たとえば、Ctrl+上,下,左,右のキーに全て「マクロ1」を割り当てます。そして、「マクロ1」にはtest.macを登録します。そして、test.macは以下のようにします。
if( iskeydown(0x25) ) { /*「←」の処理*/ }
if( iskeydown(0x26) ) { /*「↑」の処理*/ }
if( iskeydown(0x27) ) { /*「→」の処理*/ }
if( iskeydown(0x28) ) { /*「↓」の処理*/ }
Ctrl + 矢印キー が押されたときの処理は、すべてtest.macが管理できることになります。

注意:
マクロ起動直後のキー状態が取得できるのは、マクロ実行開始から1秒以内です。
また、1秒以内であっても以下の関数・文を呼んだ後では起動直後のキー状態は取得できません。
keypressed, ddewaitadvice, localgrep, runsync, menu系文

CapsLockの状態を取得するには、パラメータ2でトグル状態の取得であることを指定して、以下のようにします。
if( iskeydown( 0x14, 1 ) ) { /*「CapsLock」が有効のときの処理*/ }
参照: inputchar  keypressed  keypressedex