;; FILE: getkey.txt ;; MODULE: getkey ;; BRIEF: 君影草工房さん作「getkey.dll」のラッパ ;; DEPEND: ;; DESC: ・適切な「番号.txt」に名前を変えて使用してください。 ;; ・変数番号は GETKEY_ARG_BEGIN で指定できます。 ;; ・「getkey.dll」をカレントディレクトリ以外に置く場合は、 ;; GETKEY_DLL にDLLファイルのパスを指定してください。 ;; その際、パス区切りには「\」を用いてください。 ;; VERSION: 0.5(getkey.dll Ver.0.3, NScripter Ver.2.82) ;; AUTHOR: senzogawa *getkey stralias GETKEY_DLL,"getkey.dll" numalias GETKEY_ARG_BEGIN,100 numalias GETKEY_JOY_LEFTUP,24576 numalias GETKEY_JOY_RIGHTDOWN,40960 defsub getkey_init defsub getkey_peekdown defsub getkey_peekup defsub getkey_filter defsub getkey_isdown defsub getkey_enumjoy defsub getkey_getjoy defsub getkey_getjoy2 defsub getkey_getjoy3 defsub getkey_joy_getxydown defsub getkey_joy_getxyzdown defsub getkey_joy_xytomove defsub getkey_joy_isdown defsub getkey_joy_isdown2 defsub getkey_joy_isdown3 defsub getkey_exec defsub getkey_execwith mov %0,GETKEY_ARG_BEGIN numalias getkey_command,%0:inc %0 numalias getkey_down,%0:inc %0 numalias getkey_down1,%0:inc %0 numalias getkey_down2,%0:inc %0 numalias getkey_down3,%0:inc %0 numalias getkey_joyinfo,%0:inc %0 numalias getkey_keycode,%0:inc %0 numalias getkey_param,%0:inc %0 numalias getkey_result,%0:inc %0 numalias getkey_x,%0:inc %0 numalias getkey_y,%0:inc %0 numalias getkey_z,%0:inc %0 numalias GETKEY_ARG_END,%0-1 numalias VK_LBUTTON,1 ;マウス左ボタン numalias VK_RBUTTON,2 ;マウス右ボタン numalias VK_CANCEL,3 ;[Cancel] numalias VK_MBUTTON,4 ;マウス中央ボタン numalias VK_XBUTTON1,5 ;Windows 2000/XP: マウス X1 ボタン numalias VK_XBUTTON2,6 ;Windows 2000/XP: マウス X2 ボタン numalias VK_BACK,8 ;[Back space] numalias VK_TAB,9 ;[Tab] numalias VK_CLEAR,12 ;[Clear] numalias VK_RETURN,13 ;[Enter] numalias VK_SHIFT,16 ;[Shift] numalias VK_CONTROL,17 ;[Ctrl] numalias VK_MENU,18 ;[Alt] numalias VK_PAUSE,19 ;[Pause] numalias VK_CAPITAL,20 ;[Caps Lock] numalias VK_KANA,21 ;IME カナモード numalias VK_HANGUEL,22 ;IME ハングルモード numalias VK_JUNJA,23 ; numalias VK_FINAL,24 ; numalias VK_HANJA,25 ; numalias VK_KANJI,25 ;IME 漢字モード numalias VK_ESCAPE,27 ;[Esc] numalias VK_CONVERT,28 ;IME 変換 numalias VK_NONCONVERT,29 ;IME 無変換 numalias VK_ACCEPT,30 ; numalias VK_MODECHANGE,31 ;IME モード変更 numalias VK_SPACE,32 ;スペースキー numalias VK_PRIOR,33 ;[Page Up] numalias VK_NEXT,34 ;[Page Down] numalias VK_END,35 ;[End] numalias VK_HOME,36 ;[Home] numalias VK_LEFT,37 ;[←] numalias VK_UP,38 ;[↑] numalias VK_RIGHT,39 ;[→] numalias VK_DOWN,40 ;[↓] numalias VK_SELECT,41 ;[Select] numalias VK_PRINT,42 ;[Print] numalias VK_EXECUTE,43 ;[Execute] numalias VK_SNAPSHOT,44 ;[Print Screen] numalias VK_INSERT,45 ;[Insert] numalias VK_DELETE,46 ;[Delete] numalias VK_HELP,47 ;[Help] numalias VK_NUMBER0,48 ;[0] numalias VK_NUMBER1,49 ;[1] numalias VK_NUMBER2,50 ;[2] numalias VK_NUMBER3,51 ;[3] numalias VK_NUMBER4,52 ;[4] numalias VK_NUMBER5,53 ;[5] numalias VK_NUMBER6,54 ;[6] numalias VK_NUMBER7,55 ;[7] numalias VK_NUMBER8,56 ;[8] numalias VK_NUMBER9,57 ;[9] numalias VK_A,65 ;[A] numalias VK_B,66 ;[B] numalias VK_C,67 ;[C] numalias VK_D,68 ;[D] numalias VK_E,69 ;[E] numalias VK_F,70 ;[F] numalias VK_G,71 ;[G] numalias VK_H,72 ;[H] numalias VK_I,73 ;[I] numalias VK_J,74 ;[J] numalias VK_K,75 ;[K] numalias VK_L,76 ;[L] numalias VK_M,77 ;[M] numalias VK_N,78 ;[N] numalias VK_O,79 ;[O] numalias VK_P,80 ;[P] numalias VK_Q,81 ;[Q] numalias VK_R,82 ;[R] numalias VK_S,83 ;[S] numalias VK_T,84 ;[T] numalias VK_U,85 ;[U] numalias VK_V,86 ;[V] numalias VK_W,87 ;[W] numalias VK_X,88 ;[X] numalias VK_Y,89 ;[Y] numalias VK_Z,90 ;[Z] numalias VK_LWIN,91 ;左の Windows キー numalias VK_RWIN,92 ;右の Windows キー numalias VK_APPS,93 ;アプリケーションキー numalias VK_SLEEP,94 ;コンピュータスリープキー numalias VK_NUMPAD0,96 ;テンキーの [0] numalias VK_NUMPAD1,97 ;テンキーの [1] numalias VK_NUMPAD2,98 ;テンキーの [2] numalias VK_NUMPAD3,99 ;テンキーの [3] numalias VK_NUMPAD4,100 ;テンキーの [4] numalias VK_NUMPAD5,101 ;テンキーの [5] numalias VK_NUMPAD6,102 ;テンキーの [6] numalias VK_NUMPAD7,103 ;テンキーの [7] numalias VK_NUMPAD8,104 ;テンキーの [8] numalias VK_NUMPAD9,105 ;テンキーの [9] numalias VK_MULTIPLY,106 ;テンキーの [ * ] numalias VK_ADD,107 ;テンキーの [ + ] numalias VK_SEPARATOR,108 ;テンキーの [Enter] numalias VK_SUBTRACT,109 ;テンキーの [ - ] numalias VK_DECIMAL,110 ;テンキーの [ . ] numalias VK_DIVIDE,111 ;テンキーの [ / ] numalias VK_F1,112 ;[F1] numalias VK_F2,113 ;[F2] numalias VK_F3,114 ;[F3] numalias VK_F4,115 ;[F4] numalias VK_F5,116 ;[F5] numalias VK_F6,117 ;[F6] numalias VK_F7,118 ;[F7] numalias VK_F8,119 ;[F8] numalias VK_F9,120 ;[F9] numalias VK_F10,121 ;[F10] numalias VK_F11,122 ;[F11] numalias VK_F12,123 ;[F12] numalias VK_F13,124 ;[F13] numalias VK_F14,125 ;[F14] numalias VK_F15,126 ;[F15] numalias VK_F16,127 ;[F16] numalias VK_F17,128 ;[F17] numalias VK_F18,129 ;[F18] numalias VK_F19,130 ;[F19] numalias VK_F20,131 ;[F20] numalias VK_F21,132 ;[F21] numalias VK_F22,133 ;[F22] numalias VK_F23,134 ;[F23] numalias VK_F24,135 ;[F24] numalias VK_NUMLOCK,144 ;[Num Lock] numalias VK_SCROLL,145 ;[Scroll Lock] numalias VK_LSHIFT,160 ;左の [Shift] numalias VK_RSHIFT,161 ;右の [Shift] numalias VK_LCONTROL,162 ;左の [Ctrl] numalias VK_RCONTROL,163 ;右の [Ctrl] numalias VK_LMENU,164 ;左の [Alt] numalias VK_RMENU,165 ;右の [Alt] numalias VK_BROWSER_BACK,166 ;Windows 2000/XP: ブラウザの「戻る」キー numalias VK_BROWSER_FORWARD,167 ;Windows 2000/XP: ブラウザの「次へ」キー numalias VK_BROWSER_REFRESH,168 ;Windows 2000/XP: ブラウザの「更新」キー numalias VK_BROWSER_STOP,169 ;Windows 2000/XP: ブラウザの「中止」キー numalias VK_BROWSER_SEARCH,170 ;Windows 2000/XP: ブラウザの「検索」キー numalias VK_BROWSER_FAVORITES,171 ;Windows 2000/XP: ブラウザの「お気に入り」キー numalias VK_BROWSER_HOME,172 ;Windows 2000/XP: ブラウザの「ホーム」キー numalias VK_VOLUME_MUTE,173 ;Windows 2000/XP: ボリュームのミュートキー numalias VK_VOLUME_DOWN,174 ;Windows 2000/XP: ボリュームダウンキー numalias VK_VOLUME_UP,175 ;Windows 2000/XP: ボリュームアップキー numalias VK_MEDIA_NEXT_TRACK,176 ;Windows 2000/XP: 「次のトラック」キー numalias VK_MEDIA_PREV_TRACK,177 ;Windows 2000/XP: 「前のトラック」キー numalias VK_MEDIA_STOP,178 ;Windows 2000/XP: 「メディア停止」キー numalias VK_MEDIA_PLAY_PAUSE,179 ;Windows 2000/XP: 「メディア Start / Stop 」キー numalias VK_LAUNCH_MAIL,180 ;Windows 2000/XP: 「メール開始」キー numalias VK_LAUNCH_MEDIA_SELECT,181 ;Windows 2000/XP: 「メディア選択」キー numalias VK_LAUNCH_APP1,182 ;Windows 2000/XP: 「アプリケーション 1 起動」キー numalias VK_LAUNCH_APP2,183 ;Windows 2000/XP: 「アプリケーション 2 起動」キー numalias VK_OEM_1,186 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ :; ] numalias VK_OEM_PLUS,187 ;Windows 2000/XP: [ + ] numalias VK_OEM_COMMA,188 ;Windows 2000/XP: [ , ] numalias VK_OEM_MINUS,189 ;Windows 2000/XP: [ - ] numalias VK_OEM_PERIOD,190 ;Windows 2000/XP: [ . ] numalias VK_OEM_2,191 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ /? ] numalias VK_OEM_3,192 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ `~ ] numalias VK_OEM_4,219 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ [{ ] numalias VK_OEM_5,220 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ \| ] numalias VK_OEM_6,221 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ ]} ] numalias VK_OEM_7,222 ;さまざまな文字のために使用できます。Windows 2000/XP: U.S. 標準キーボードでは [ '" ] numalias VK_OEM_8,223 ;さまざまな文字のために使用できます。 numalias VK_OEM_102,226 ;Windows 2000/XP: RT 102-key キーボードの角カッコまたはバックスラッシュ numalias VK_PROCESSKEY,229 ;Windows 95/98/Me/NT 4.0/2000/XP: IME Process numalias VK_PACKET,231 ;Windows 2000/XP: Unicode 文字がキーストロークであるかのように通すために使用されます。 numalias VK_ATTN,246 ;Attn numalias VK_CRSEL,247 ;CrSel numalias VK_EXSEL,248 ;ExSel numalias VK_EREOF,249 ;Erase EOF numalias VK_PLAY,250 ;Play numalias VK_ZOOM,251 ;Zoom numalias VK_NONAME,252 ;予約 numalias VK_PA1,253 ;PA1 numalias VK_OEM_CLEAR,254 ;Clear return ;; 初期化します。Peek(D) / PeekU を実行する前に、必ず1度は実行してください。 *getkey_init getkey_exec "Init" return ;; DLL内部のキューから、キーダウン情報を取得します。 ;; 数値戻り値には仮想キーコードを返し、 ;; キューが空の場合には0を返します。 *getkey_peekdown getparam i%getkey_result getkey_exec "Peek" getret %%getkey_result return ;; DLL内部のキューから、キーアップ情報を取得します。 ;; 動作はPeek(D)と同様です。 *getkey_peekup getparam i%getkey_result getkey_exec "PeekU" getret %%getkey_result return ;; 10進数で指定された仮想キーコードに対応するキーの ;; キーダウン/アップ情報をNScripterに伝えないようにします。 *getkey_filter getparam %getkey_keycode itoa $getkey_keycode,%getkey_keycode getkey_execwith "Filter",$getkey_keycode return ;; 10進数で指定された仮想キーコードに対応するキーが、 ;; 押されているかを取得します。 ;; NScripterのウィンドウがアクティブで押されている場合は1を、 ;; 非アクティブ状態で押されている場合は-1を、 ;: 押されていない場合は0を数字戻り値に返します。 *getkey_isdown getparam i%getkey_result,%getkey_keycode itoa $getkey_keycode,%getkey_keycode getkey_execwith "IsDown",$getkey_keycode getret %%getkey_result return ;; サポートされるジョイスティックの最大数を取得し、 ;; 数値戻り値に返します。 *getkey_enumjoy getparam i%getkey_result getkey_exec "EnumJoy" getret %%getkey_result return ;; 指定した識別子のジョイスティックを照会して、 ;; その位置とボタンの状態を取得します。 ;; 識別子は、0から(EnumJoyで返される値-1)までの数値です。 ;; 文字列戻り値には、"X軸の状態,同Y軸,同Z軸,ボタンの状態" が返され、 ;; 軸の状態は、0〜65535の値をとり、32767が中心です。 ;; ボタンの状態は、押されているボタンに対応するビットがセットされています。 *getkey_getjoy getparam s%getkey_result getkey_exec "GetJoy" getret $%getkey_result return ;; ジョイスティック情報を分割して取得する。(ヘルパー) *getkey_getjoy2 getparam i%getkey_x,i%getkey_y,i%getkey_down getkey_exec "GetJoy" getret $getkey_result split $getkey_result,",",%%getkey_x,%%getkey_y,%getkey_z,%%getkey_down return ;; ジョイスティック情報を分割して取得する。(ヘルパー) *getkey_getjoy3 getparam i%getkey_x,i%getkey_y,i%getkey_z,i%getkey_down getkey_exec "GetJoy" getret $getkey_result split $getkey_result,",",%%getkey_x,%%getkey_y,%%getkey_z,%%getkey_down return ;; ジョイスティック情報からXY軸を取得する。(ヘルパー) *getkey_joy_getxydown getparam $getkey_joyinfo,i%getkey_x,i%getkey_y,i%getkey_down split $getkey_result,",",%%getkey_x,%%getkey_y,%getkey_z,%%getkey_down return ;; ジョイスティック情報からXYZ軸を取得する。(ヘルパー) *getkey_joy_getxyzdown getparam $getkey_joyinfo,i%getkey_x,i%getkey_y,i%getkey_z,i%getkey_down split $getkey_result,",",%%getkey_x,%%getkey_y,%%getkey_z,%%getkey_down return ;; XY軸の値を傾きに変換する。(ヘルパー) ;; 左上方向:-1、なし:0、右下方向:1 *getkey_joy_xytomove getparam i%getkey_x,i%getkey_y if %%getkey_x<GETKEY_JOY_LEFTUP mov %%getkey_x,-1:skip 3 if %%getkey_x>GETKEY_JOY_RIGHTDOWN mov %%getkey_x,1:skip 2 mov %%getkey_x,0 if %%getkey_y<GETKEY_JOY_LEFTUP mov %%getkey_y,-1:return if %%getkey_y>GETKEY_JOY_RIGHTDOWN mov %%getkey_y,1:return mov %%getkey_y,0 return ;; ジョイスティックボタン情報からボタン状態を取得する。(ヘルパー) *getkey_joy_isdown getparam %getkey_down,i%getkey_down1 if %getkey_down mod 4 mod 2==1 mov %%getkey_down1,1:return mov %%getkey_down1,0 return ;; ジョイスティックボタン情報からボタン状態を取得する。(ヘルパー) *getkey_joy_isdown2 getparam %getkey_down,i%getkey_down1,i%getkey_down2 mov %%getkey_down1,0 mov %%getkey_down2,0 if %getkey_down mod 4/2==1 mov %%getkey_down2,1 if %getkey_down mod 2==1 mov %%getkey_down1,1 return ;; ジョイスティックボタン情報からボタン状態を取得する。(ヘルパー) *getkey_joy_isdown3 getparam %getkey_down,i%getkey_down1,i%getkey_down2,i%getkey_down3 mov3 %getkey_down1,0,0,0 if %getkey_down/4==1 mov %%getkey_down3,1 if %getkey_down mod 4/2==1 mov %%getkey_down2,1 if %getkey_down mod 2==1 mov %%getkey_down1,1 return ;; パラメータなしメッセージを送る *getkey_exec getparam $getkey_command exec_dll GETKEY_DLL+"/"+$getkey_command return ;; パラメータ付きメッセージを送る *getkey_execwith getparam $getkey_command,$getkey_param exec_dll GETKEY_DLL+"/"+$getkey_command+","+$getkey_param return