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