All pastes #266350 Raw Edit

Oneka

public text v1 · immutable
·published 2006-12-04 01:15 UTC
rendered paste body
TYPE KEY_FUNCTIONS
	EXISTS AS BOOLEAN
	FUNCTIONS$ AS STRING
	KEY AS INTEGER
	LOCK AS BOOLEAN
ENDTYPE

FUNCTION SET_KEY_FUNCTION_SIZE(SIZE)
	SYS_KEY_FUNCTION_SIZE = SIZE
	GLOBAL DIM KEY_FUNCTIONS(SYS_KEY_FUNCTION_SIZE) AS KEY_FUNCTIONS
ENDFUNCTION

FUNCTION MAKE_KEY_FUNCTION(FUNCTIONS$,KEY)
	FOR FIND = 1 TO SYS_KEY_FUNCTION_SIZE
		IF KEY_FUNCTIONS(FIND).EXISTS = 0
			TEMP_FIND = FIND
			FIND = SYS_KEY_FUNCTION_SIZE
		ENDIF
	NEXT FIND
	IF TEMP_FIND <> 0
		KEY_FUNCTIONS(TEMP_FIND).EXISTS = 1
		KEY_FUNCTIONS(TEMP_FIND).FUNCTIONS$ = FUNCTIONS$
		KEY_FUNCTIONS(TEMP_FIND).KEY = KEY
	ENDIF
ENDFUNCTION

FUNCTION DELETE_KEY_FUNCTION(FUNCTIONS$)
	FOR FIND = 1 TO SYS_KEY_FUNCTION_SIZE
		IF KEY_FUNCTIONS(FIND).FUNCTIONS$ = FUNCTIONS$
			KEY_FUNCTIONS(FIND).EXISTS = 1
			KEY_FUNCTIONS(TEMP_FIND).FUNCTIONS$ = ""
			KEY_FUNCTIONS(TEMP_FIND).KEY = 0
			FIND = SYS_KEY_FUNCTION_SIZE
		ENDIF
	NEXT FIND
ENDFUNCTION

FUNCTION KEY_FUNCTION_CHECK(FUNCTIONS$ as string)
	FOR T = 1 to ARRAY COUNT(KEY_FUNCTIONS())
		IF KEY_FUNCTIONS(T).FUNCTIONS$ = FUNCTIONS$
			IF KEYSTATE(KEY_FUNCTIONS(T).KEY) = 1
				TEMP = 1
			ENDIF
			T = ARRAY COUNT(KEY_FUNCTIONS())
		ENDIF
	NEXT T
	IF TEMP = 1
		TEMP_RESULT = 1
	ELSE
		TEMP_RESULT = 0
	ENDIF
ENDFUNCTION TEMP_RESULT

FUNCTION KEY_FUNCTION_LOCK_CHECK(FUNCTIONS$ as string)
	FOR T = 1 to ARRAY COUNT(KEY_FUNCTIONS())
		IF KEY_FUNCTIONS(T).FUNCTIONS$ = FUNCTIONS$
			
			IF KEYSTATE(KEY_FUNCTIONS(T).KEY) = 1 AND KEY_FUNCTIONS(T).LOCK = 0
				TEMP_RESULT = 1
				KEY_FUNCTIONS(T).LOCK = 1
				T = ARRAY COUNT(KEY_FUNCTIONS())
			ELSE
				IF KEYSTATE(KEY_FUNCTIONS(T).KEY) = 0
					KEY_FUNCTIONS(T).LOCK = 0
				ENDIF
				TEMP_RESULT = 0
			ENDIF
		ELSE
			TEMP_RESULT = 0
		ENDIF
	NEXT T
ENDFUNCTION TEMP_RESULT

FUNCTION KEY_AUTO_LOCK_CHECK()
	FOR T = 1 to ARRAY COUNT(KEY_FUNCTIONS())
		IF KEY_FUNCTIONS(T).FUNCTIONS$ <> ""
			IF KEYSTATE(KEY_FUNCTIONS(T).KEY) = 0 AND KEY_FUNCTIONS(T).LOCK = 1
				KEY_FUNCTIONS(T).LOCK = 0
			ENDIF
		ENDIF
	NEXT T
ENDFUNCTION