Yes,
bge.logic.KX_INPUT_JUST_ACTIVATED
is an int, as are all the constants for that status.
So you don’t need to use the full title, just use 1, 2 or whatever.
Here’s a simple function for checking for keyboard input.
def key_triggered(key,tap = False):
if tap:
triggered = [1]
else:
triggered = [1, 2]
if bge.logic.keyboard.events[key] in triggered:
return True
return False
space key = 32 (you can get the numbers which relate to the keys here.)
So I would check for space being pressed by using:
space_is_pressed = key_triggered(32,tap=True)
or I’d use a custom keys dictionary:
default_actions = {"action":(113,"QKEY",True),
"show_dialogs":(101,"EKEY",True),
"jump":(32,"SPACEKEY",False),
"flashlight":(102,"FKEY",True),
"crouch":(124,"LEFTCTRLKEY",True)}
active_keys = []
for key_key in default_actions:
key_data = default_actions[key_key]
check_key_triggered = key_triggered(key_data[0],tap=key_data[2])
if check_key_triggered:
active_keys.append(key_key)
And that would give me a list of actions performed that tic, like [“jump”,“flashlight”]
Then I could do actions like:
if "jump" in active_keys:
player_jump()
You can customize the keys pretty easily from there by editing the default_actions dictionary. Usually I have a default key setup, then I load that in to globalDict. From there it’s very easy to assign custom keys to the dictionary:
setting_string = "flashlight"
setting_key = globalDict['keys'][setting_string]
current_pressed_key = None
keys_pressed = bge.logic.keyboard.events
for pressed_key in keys_pressed:
if keys_pressed[pressed_key] == 1:
current_pressed_key = pressed_key
current_key_name = bge.events.EventToString(current_pressed_key)
if current_pressed_key:
tap = setting_key[2]
setting_key = (current_pressed_key,current_key_name,tap)