目次
キー・マウスの状態を取得します。キー・マウスが押されている間はTrue、押されていない間はFalseを返します。キーボードの操作を行うにはKBD関数、マウスの操作を行うにはBTN関数を使います。
- 構文
- Boolean = GETKEYSTATE( キーコード )
- 引数
- キーコード (#getkeystate)必須
- 状態を知りたいキーコード
- 戻り値
- TRUE:クリックがあった、 FALSE:なし
※マウスクリック- VK_RBUTTON(右)
- VK_LBUTTON(左)
- VK_MBUTTON(中)
※トグルキー状態- TGL_IME(IME)
- TGL_NUMLOCK(NumLock)
- TGL_CAPSLOCK(CapsLock)
- TGL_SCROLLLOCK(ScrollLock)
- TGL_KANALOCK(カタカナ)
マウス
マウスのクリックの状態を取得します。
以下は左クリックの状態を吹き出しに表示します。押されている間は1、押されていないときは0を表示します。
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
WHILE TRUE
FUKIDASI(GETKEYSTATE(VK_LBUTTON))
SLEEP(0.001)
WEND
//////////////////////////////////////////////////
// 【引数】
//
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE forceQuit()
EXITEXIT
FEND
トグルキー
トグルキーとは押すたびに2つの状態(オン・オフ)が変わるキーのことをいい、半角/全角キー、NumLockキー、CapsLockキー、ScrollLockキー、かなロックキーの5つがあります。
- 半角/全角キー
- 半角入力と全角入力を切り替えます。
- NumLockキー
- テンキーで数字入力と移動キーを切り替えます。
- CapsLockキー
- CapsLockのCapsとはCapital lettersの略で大文字を意味しています。CapsLockを有効にすることでアルファベット入力を大文字に固定することができます。
- ScrollLockキー
- 画面上のカーソルの位置を固定し、表示範囲を上下左右にスクロールします。
- かなロックキー
- ローマ字入力とかな入力を切り替えます。かなロックキーがオンでかな入力、オフでローマ字入力です。
CapsLockのみは単独で状態を切り替えることができず、Shift+CapsLockを組み合わせて押す必要があります。
以下はトグルキーの状態とGETKEYSTATE関数の戻り値の関係を表にしたものです。半角/全角以外はONになっていればTrueを返します。
True | False | |
---|---|---|
半角/全角 | 入力モードが以下のいずれか
|
直接入力 |
NumLock | ON テンキーで数値が入力できる状態 |
OFF テンキーの2,4,6,8でカーソルが動く状態 |
CapsLock | ON アルファベット入力が大文字の状態 |
OFF アルファベット入力が小文字の状態 |
ScrollLock | ON 移動キーでカーソルが動く状態 |
OFF 移動キーで画面をスクロールできる状態 |
カナロック | ON ローマ字入力 |
OFF かな入力 |
以下はGETKEYSTATE関数のトグルキー状態とそれに対応するKBD関数の定数の関係を表したものです。
GETKEYSTATE | KBD | |
---|---|---|
半角/全角 | TGL_IME | VK_KANJI |
NumLock | TGL_NUMLOCK | VK_NUMLOCK |
CapsLock | TGL_CAPSLOCK | VK_CAPITAL |
ScrollLock | TGL_SCROLLLOCK | VK_SCROLL |
カナロック | TGL_KANALOCK | VK_KANA |
トグルキーはクリックするたびに状態が変わるので、まずGETKEYSTATE関数で状態を取得してからKBD関数でキーを押すか押さないかを判断する必要があります。
例えばNumLockを有効にしたいとき、GETKEYSTATE関数で現在の状態を確認してOFFになっているときのみKBD関数でNumLockキーを押すという処理を行います。このような処理を記述することで、現在の状態に関係なくNumLockがONにすることができます。
IF !GETKEYSTATE(TGL_NUMLOCK) THEN KBD(VK_NUMLOCK)
逆にNumLockを無効にしたいときは、現在の状態がONになっているときのみNumLockキーを押すという処理を行います。GETKEYSTATEの前に!があるかないかの違いのみです。
IF GETKEYSTATE(TGL_NUMLOCK) THEN KBD(VK_NUMLOCK)
特定のキーの長押しを検知
一つのキー
特定のキーを押してから離すまでの時間(単位:ミリ秒)で測定。以下はスペースキーを押してから離すまでの時間を返します。
DEF_DLL GetTickCount(): LONG: kernel32.dll
DIM key = VK_SPACE
REPEAT
SLEEP(0.001)
UNTIL GETKEYSTATE(key)
DIM stime = GetTickCount()
REPEAT
DIM time = GetTickCount() - stime
FUKIDASI(time)
SLEEP(0.001)
UNTIL !GETKEYSTATE(key)
PRINT time
特定のキーを押して指定時間以上で抜けます。以下はスペースキーが3000ミリ秒押し続けたらループを抜けます。
DEF_DLL GetTickCount(): LONG: kernel32.dll
DIM key = VK_SPACE
REPEAT
SLEEP(0.001)
UNTIL GETKEYSTATE(key)
DIM stime = GetTickCount()
REPEAT
DIM time = GetTickCount() - stime
FUKIDASI(time)
SLEEP(0.001)
UNTIL !GETKEYSTATE(key) OR time >= 3000
PRINT time
複数のキー
複数のキーを検知するには、論理演算子(AND、OR)で繋げて記述します。
以下はCtrlとSpaceの同時押しを検知するプログラムです。
REPEAT
SLEEP(0.001)
UNTIL GETKEYSTATE(VK_CTRL) AND GETKEYSTATE(VK_SPACE)
仮想キーコード一覧
値 | 定数名 | 意味 | 対応キー | Shift |
---|---|---|---|---|
1 | VK_LBUTTON | マウスの左ボタン | ||
2 | VK_RBUTTON | マウスの右ボタン | ||
3 | VK_CANCEL | コントロール・ブレイク処理 | ||
4 | VK_MBUTTON | マウスの中央ボタン(3ボタンマウス) | ||
5 | VK_XBUTTON1 | マウスの第1拡張ボタン | ||
6 | VK_XBUTTON2 | マウスの第2拡張ボタン | ||
7 | ||||
8 | VK_BACK | Backspaceキー | Backspace | |
9 | VK_TAB | Tabキー | Tab | |
10 | 予約済 | |||
11 | 予約済 | |||
12 | VK_CLEAR | Clearキー | Clear | |
13 | VK_RETURN | Enterキー | Enter | |
14 | 未定義 | |||
15 | 未定義 | |||
16 | VK_SHIFT | |||
17 | VK_CONTROL | |||
18 | VK_MENU | |||
19 | VK_PAUSE | Pauseキー | Pause | |
20 | VK_CAPITAL | CapsLockキー | CapsLock | |
21 | VK_KANA | IME かなモード | ||
22 | 未定義 | |||
23 | VK_JUNJA | IME Junjaモード | ||
24 | VK_FINAL | IME ファイナルモード | ||
25 | VK_KANJI | IME 漢字モード | ||
26 | 未定義 | |||
27 | VK_ESCAPE | Escキー | Esc | |
28 | VK_CONVERT | IME 変換 | 変換 | |
29 | VK_NONCONVERT | IME 無変換 | 無変換 | |
30 | VK_ACCEPT | IME 使用可能 | ||
31 | VK_MODECHANGE | IME モード変更要求 | ||
32 | VK_SPACE | スペースキー | Space | |
33 | VK_PRIOR | PageUpキー | PageUp | |
34 | VK_NEXT | PageDownキー | PageDown | |
35 | VK_END | Endキー | End | |
36 | VK_HOME | Homeキー | Home | |
37 | VK_LEFT | ←キー | ← | |
38 | VK_UP | ↑キー | ↑ | |
39 | VK_RIGHT | →キー | → | |
40 | VK_DOWN | ↓キー | ↓ | |
41 | VK_SELECT | Selectキー | ||
42 | VK_PRINT | Printキー | ||
43 | VK_EXECUTE | Executeキー | ||
44 | VK_SNAPSHOT | PrintScreenキー | PrintScreen | |
45 | VK_INSERT | Insertキー | Insert | |
46 | VK_DELETE | Deleteキー | Delete | |
47 | VK_HELP | Helpキー | ||
48 | VK_0 | 0キー | 0 | |
49 | VK_1 | 1キー | 1 | ! |
50 | VK_2 | 2キー | 2 | " |
51 | VK_3 | 3キー | 3 | # |
52 | VK_4 | 4キー | 4 | $ |
53 | VK_5 | 5キー | 5 | % |
54 | VK_6 | 6キー | 6 | & |
55 | VK_7 | 7キー | 7 | ' |
56 | VK_8 | 8キー | 8 | ( |
57 | VK_9 | 9キー | 9 | ) |
58 | 未定義 | |||
59 | 未定義 | |||
60 | 未定義 | |||
61 | 未定義 | |||
62 | 未定義 | |||
63 | 未定義 | |||
64 | 未定義 | |||
65 | VK_A | Aキー | a | A |
66 | VK_B | Bキー | b | B |
67 | VK_C | Cキー | c | C |
68 | VK_D | Dキー | d | D |
69 | VK_E | Eキー | e | E |
70 | VK_F | Fキー | f | F |
71 | VK_G | Gキー | g | G |
72 | VK_H | Hキー | h | H |
73 | VK_I | Iキー | i | I |
74 | VK_J | Jキー | j | J |
75 | VK_K | Kキー | k | K |
76 | VK_L | Lキー | l | L |
77 | VK_M | Mキー | m | M |
78 | VK_N | Nキー | n | N |
79 | VK_O | Oキー | o | O |
80 | VK_P | Pキー | p | P |
81 | VK_Q | Qキー | q | Q |
82 | VK_R | Rキー | r | R |
83 | VK_S | Sキー | s | S |
84 | VK_T | Tキー | t | T |
85 | VK_U | Uキー | u | U |
86 | VK_V | Vキー | v | V |
87 | VK_W | Wキー | w | W |
88 | VK_X | Xキー | x | X |
89 | VK_Y | Yキー | y | Y |
90 | VK_Z | Zキー | z | Z |
91 | VK_LWIN | 左Windowsキー | 左 | |
92 | VK_RWIN | 右Windowsキー | 右 | |
93 | VK_APPS | アプリケーションキー | ||
94 | 予約済 | |||
95 | VK_SLEEP | コンピュータスリープキー | ||
96 | VK_NUMPAD0 | テンキーの0キー | テンキーの0 | Insert |
97 | VK_NUMPAD1 | テンキーの1キー | テンキーの1 | End |
98 | VK_NUMPAD2 | テンキーの2キー | テンキーの2 | ↓ |
99 | VK_NUMPAD3 | テンキーの3キー | テンキーの3 | PageDown |
100 | VK_NUMPAD4 | テンキーの4キー | テンキーの4 | ← |
101 | VK_NUMPAD5 | テンキーの5キー | テンキーの5 | |
102 | VK_NUMPAD6 | テンキーの6キー | テンキーの6 | → |
103 | VK_NUMPAD7 | テンキーの7キー | テンキーの7 | Home |
104 | VK_NUMPAD8 | テンキーの8キー | テンキーの8 | ↑ |
105 | VK_NUMPAD9 | テンキーの9キー | テンキーの9 | PageUp |
106 | VK_MULTIPLY | テンキーの*キー | テンキーの* | |
107 | VK_ADD | テンキーの+キー | テンキーの+ | |
108 | VK_SEPARATOR | 区切り記号キー | ||
109 | VK_SUBTRACT | 減算記号キー | テンキーの- | |
110 | VK_DECIMAL | 小数点キー | テンキーの. | Delete |
111 | VK_DIVIDE | 除算記号キー | テンキーの/ | |
112 | VK_F1 | F1キー | F1 | |
113 | VK_F2 | F2キー | F2 | |
114 | VK_F3 | F3キー | F3 | |
115 | VK_F4 | F4キー | F4 | |
116 | VK_F5 | F5キー | F5 | |
117 | VK_F6 | F6キー | F6 | |
118 | VK_F7 | F7キー | F7 | |
119 | VK_F8 | F8キー | F8 | |
120 | VK_F9 | F9キー | F9 | |
121 | VK_F10 | F10キー | F10 | |
122 | VK_F11 | F11キー | F11 | |
123 | VK_F12 | F12キー | F12 | |
124 | VK_F13 | F13キー | F13 | |
125 | VK_F14 | F14キー | F14 | |
126 | VK_F15 | F15キー | F15 | |
127 | VK_F16 | F16キー | F16 | |
128 | VK_F17 | F17キー | F17 | |
129 | VK_F18 | F18キー | F18 | |
130 | VK_F19 | F19キー | F19 | |
131 | VK_F20 | F20キー | F20 | |
132 | VK_F21 | F21キー | F21 | |
133 | VK_F22 | F22キー | F22 | |
134 | VK_F23 | F23キー | F23 | |
135 | VK_F24 | F24キー | F24 | |
136 | VK_NAVIGATION_VIEW | 割当無し | ||
137 | VK_NAVIGATION_MENU | 割当無し | ||
138 | VK_NAVIGATION_UP | 割当無し | ||
139 | VK_NAVIGATION_DOWN | 割当無し | ||
140 | VK_NAVIGATION_LEFT | 割当無し | ||
141 | VK_NAVIGATION_RIGHT | 割当無し | ||
142 | VK_NAVIGATION_ACCEPT | 割当無し | ||
143 | VK_NAVIGATION_CANCEL | 割当無し | ||
144 | VK_NUMLOCK | NumLockキー | NumLock | |
145 | VK_SCROLL | ScrollLockキー | ScrollLock | |
146 | VK_OEM_NEC_EQUAL | OEM固有 | ||
VK_OEM_FJ_JISHO | ||||
147 | VK_OEM_FJ_MASSHOU | OEM固有 | ||
148 | VK_OEM_FJ_TOUROKU | OEM固有 | ||
149 | VK_OEM_FJ_LOYA | OEM固有 | ||
150 | VK_OEM_FJ_ROYA | OEM固有 | ||
151 | 割当無し | |||
152 | 割当無し | |||
153 | 割当無し | |||
154 | 割当無し | |||
155 | 割当無し | |||
156 | 割当無し | |||
157 | 割当無し | |||
158 | 割当無し | |||
159 | 割当無し | |||
160 | VK_LSHIFT | 左Shiftキー | 左Shift | |
161 | VK_RSHIFT | 右Shiftキー | 右Shift | |
162 | VK_LCONTROL | 左Ctrlキー | 左Ctrl | |
163 | VK_RCONTROL | 右Ctrlキー | 右Ctrl | |
164 | VK_LMENU | 左Altキー | 左Alt | |
165 | VK_RMENU | 右Altキー | 右Alt | |
166 | VK_BROWSER_BACK | ブラウザーの戻るキー | ||
167 | VK_BROWSER_FORWARD | ブラウザーの進むキー | ||
168 | VK_BROWSER_REFRESH | ブラウザーの更新のキー | ||
169 | VK_BROWSER_STOP | ブラウザーの停止キー | ||
170 | VK_BROWSER_SEARCH | ブラウザーの検索キー | ||
171 | VK_BROWSER_FAVORITES | ブラウザーのお気に入りキー | ||
172 | VK_BROWSER_HOME | ブラウザーの開始およびホームキー | ||
173 | VK_VOLUME_MUTE | 音量ミュートキー | ||
174 | VK_VOLUME_DOWN | 音量ダウンキー | ||
175 | VK_VOLUME_UP | 音量アップキー | ||
176 | VK_MEDIA_NEXT_TRACK | 次のトラックキー | ||
177 | VK_MEDIA_PREV_TRACK | 前のトラックキー | ||
178 | VK_MEDIA_STOP | メディア停止キー | ||
179 | VK_MEDIA_PLAY_PAUSE | メディア再生/一時停止キー | ||
180 | VK_LAUNCH_MAIL | メール起動キー | ||
181 | VK_LAUNCH_MEDIA_SELECT | メディア選択キー | ||
182 | VK_LAUNCH_APP1 | アプリケーション1起動キー | ||
183 | VK_LAUNCH_APP2 | アプリケーション2起動キー | ||
184 | 予約済 | |||
185 | 予約済 | |||
186 | VK_OEM_1 | OEM1キー | : | * |
187 | VK_OEM_PLUS | +キー | ; | + |
188 | VK_OEM_COMMA | ,キー | , | < |
189 | VK_OEM_MINUS | -キー | - | = |
190 | VK_OEM_PERIOD | .キー | . | > |
191 | VK_OEM_2 | OEM2キー | / | ? |
192 | VK_OEM_3 | OEM3キー | @ | ` |
193 | VK_ABNT_C1 | 予約済 | ||
194 | VK_ABNT_C2 | 予約済 | ||
195 | VK_GAMEPAD_A | 予約済 | ||
196 | VK_GAMEPAD_B | 予約済 | ||
197 | VK_GAMEPAD_X | 予約済 | ||
198 | VK_GAMEPAD_Y | 予約済 | ||
199 | VK_GAMEPAD_RIGHT_SHOULDER | 予約済 | ||
200 | VK_GAMEPAD_LEFT_SHOULDER | 予約済 | ||
201 | VK_GAMEPAD_LEFT_TRIGGER | 予約済 | ||
202 | VK_GAMEPAD_RIGHT_TRIGGER | 予約済 | ||
203 | VK_GAMEPAD_DPAD_UP | 予約済 | ||
204 | VK_GAMEPAD_DPAD_DOWN | 予約済 | ||
205 | VK_GAMEPAD_DPAD_LEFT | 予約済 | ||
206 | VK_GAMEPAD_DPAD_RIGHT | 予約済 | ||
207 | VK_GAMEPAD_MENU | 予約済 | ||
208 | VK_GAMEPAD_VIEW | 予約済 | ||
209 | VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON | 予約済 | ||
210 | VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON | 予約済 | ||
211 | VK_GAMEPAD_LEFT_THUMBSTICK_UP | 予約済 | ||
212 | VK_GAMEPAD_LEFT_THUMBSTICK_DOWN | 予約済 | ||
213 | VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT | 予約済 | ||
214 | VK_GAMEPAD_LEFT_THUMBSTICK_LEFT | 予約済 | ||
215 | VK_GAMEPAD_RIGHT_THUMBSTICK_UP | 予約済 | ||
216 | VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN | 割当無し | ||
217 | VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT | 割当無し | ||
218 | VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT | 割当無し | ||
219 | VK_OEM_4 | OEM4キー | [ | { |
220 | VK_OEM_5 | OEM5キー | \ | | |
221 | VK_OEM_6 | OEM6キー | ] | } |
222 | VK_OEM_7 | OEM7キー | ||
223 | VK_OEM_8 | OEM8キー | ||
224 | 予約済 | |||
225 | VK_OEM_AX | OEM固有 | ||
226 | VK_OEM_102 | OEM102キー | \ | _ |
227 | VK_ICO_HELP | OEM固有 | ||
228 | VK_ICO_00 | |||
229 | VK_PROCESSKEY | IME PROCESSキー | ||
230 | VK_ICO_CLEAR | OEM固有 | ||
231 | VK_PACKET | キーボード以外の入力手段に使用される 32 ビット仮想キー値の下位ワード |
||
232 | 割当無し | |||
233 | VK_OEM_RESET | OEM固有 | ||
234 | VK_OEM_JUMP | OEM固有 | ||
235 | VK_OEM_PA1 | OEM固有 | ||
236 | VK_OEM_PA2 | OEM固有 | ||
237 | VK_OEM_PA3 | OEM固有 | ||
238 | VK_OEM_WSCTRL | OEM固有 | ||
239 | VK_OEM_CUSEL | OEM固有 | ||
240 | VK_OEM_ATTN | OEM固有 | ||
241 | VK_OEM_FINISH | OEM固有 | ||
242 | VK_OEM_COPY | OEM固有 | ||
243 | VK_OEM_AUTO | OEM固有 | ||
244 | VK_OEM_ENLW | OEM固有 | ||
245 | VK_OEM_BACKTAB | OEM固有 | ||
246 | VK_ATTN | Attnキー | Attn | |
247 | VK_CRSEL | CrSelキー | CrSel | |
248 | VK_EXSEL | ExSelキー | ExSel | |
249 | VK_EREOF | Erase EOFキー | ||
250 | VK_PLAY | Playキー | ||
251 | VK_ZOOM | Zoomキー | ||
252 | VK_NONAME | 予約済 | ||
253 | VK_PA1 | PA1キー | ||
254 | VK_OEM_CLEAR | Clearキー | ||
255 |
プログラム実行例
日本語入力をONにする
現在の入力モードが直接入力であれば半角/全角キーを押して日本語入力に切り替えます。
IF !GETKEYSTATE(TGL_IME) THEN KBD(VK_KANJI, CLICK)
日本語入力をOFFにする
現在の入力モードが日本語入力であれば半角/全角キーを押して直接入力に切り替えます。
IF GETKEYSTATE(TGL_IME) THEN KBD(VK_KANJI, CLICK)
NumLockをONにする
NumLockの状態を確認し、OFFであればNumLockキーを押してONにします。
IF !GETKEYSTATE(TGL_NUMLOCK) THEN KBD(VK_NUMLOCK)
NumLockをOFFにする
NumLockの状態を確認し、ONであればNumLockキーを押してOFFにします。
IF GETKEYSTATE(TGL_NUMLOCK) THEN KBD(VK_NUMLOCK)
CapsLockをONにする
CapsLockの状態を確認し、OFFであればCapsLockキーを押してONにします。
IF !GETKEYSTATE(TGL_CAPSLOCK) THEN KBD(VK_CAPITAL)
CapsLockをOFFにする
CapsLockの状態を確認し、ONであればCapsLockキーを押してOFFにします。
IF GETKEYSTATE(TGL_CAPSLOCK) THEN KBD(VK_CAPITAL)
ScrollLockをONにする
IF !GETKEYSTATE(TGL_SCROLLLOCK) THEN KBD(VK_SCROLL)
ScrollLockをOFFにする
IF GETKEYSTATE(TGL_SCROLLLOCK) THEN KBD(VK_SCROLL)
カナロックをONにする
IF !GETKEYSTATE(TGL_KANALOCK) THEN KBD(VK_KANA)
カナロックをOFFにする
IF GETKEYSTATE(TGL_KANALOCK) THEN KBD(VK_KANA)
関連記事
- LOCKHARDEX関数 (スクリプト関数)
- MMV関数 (スクリプト関数)
- マウスカーソルを指定した座標に移動します。
- MOUSEORG関数 (スクリプト関数)
- マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送ります。
- MUSCUR関数 (スクリプト関数)
- MUSCUR関数は、マウスカーソルの種別を数値で返す関数です。引数はなく、戻値はInteger型です。
- SETHOTKEY関数 (スクリプト関数)
- SETHOTKEY関数は、ホットキーを設定しProcedure関数を呼び出すことができる関数です。キーコードは仮想キーを指定します。関数の呼び出しに成功した場合はTRUE、失敗した場合はFALSEを返します。