〜 インプット 〜
NumLock、CapsLock、ScrollLockの状態取得 (要USER32.DLL)

キーボードに付いてる「NumLock」キー、「CapsLock」キー、「ScrollLock」キー
3つのトグルキーの状態がそれぞれONかOFFかを取得するサンプルです。
取得にはAPI関数GetKeyStateを使用しており、引数に指定するのは仮想キーコード一つだけです。
「NumLock」キーの仮想キーコードは144「VK_NUMLOCK(=0x90)」、
「CapsLock」キーの仮想キーコードは20「VK_CAPITAL(=0x14)」 、
「ScrollLock」キーの仮想キーコードは145「VK_SCROLL(=0x91)」を指定しましょう。
尚、その他の仮想キーコードについてはコチラのキーコード一覧表で確認してください。
	

gettoggle キーコード
キーコードトグルの状態を取得する仮想キーコードを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	ll_libload user, "user32.dll"
	ll_getproc GetKeyState, "GetKeyState", user

#module
#deffunc gettoggle int
	mref keycode, 0
	mref stt, 64
	ll_callfunc keycode, 1, GetKeyState@
	ll_ret keycode
	stt = keycode ! 0
	return
#global

	sdim toggle, 4, 2
	sdim keyname, 12, 3
	toggle = "OFF", "ON"
	keyname = "NumLock", "CapsLock", "ScrollLock"
	keycode = 0x90, 0x14, 0x91
	repeat
		redraw 0
		color 255, 255, 255 : boxf : color
		pos 0, 0
		repeat 3
			gettoggle keycode.cnt
			mes keyname.cnt + ":" + toggle.stat
		loop
		redraw 1
		wait 5
	loop

状態 = GetKeyState(キーコード)
状態OFF(=0)かON(=1)かのトグル状態を受け取る受取先を指定する。
キーコードトグルの状態を取得する仮想キーコードを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#uselib "user32.dll"
#cfunc GetKeyState "GetKeyState" int

	toggle = "OFF", "ON"
	keyname = "NumLock", "CapsLock", "ScrollLock"
	keycode = 0x90, 0x14, 0x91
	repeat
		redraw 0
		color 255, 255, 255 : boxf : color
		pos 0, 0
		foreach keyname
			mes strf("%s:%s", keyname.cnt, toggle(GetKeyState(keycode.cnt) ! 0))
		loop
		redraw 1
		wait 5
	loop