PromptMap includes modifiers

This commit is contained in:
Rob Kelly 2024-12-08 19:44:30 -07:00
parent ce2996a703
commit 01df07eb11
1 changed files with 18 additions and 2 deletions

View File

@ -1,6 +1,7 @@
class_name PromptMap
## Tools for mapping input events to PromptFont glyphs.
const COMPOSE_FMT := "{0}+{1}"
const UNKNOWN_INPUT_SYMBOL := PromptFont.ICON_QUESTION
## Keyboard key map
@ -12,6 +13,7 @@ const KEYBOARD := {
KEY_CTRL: PromptFont.KEYBOARD_CONTROL,
KEY_ALT: PromptFont.KEYBOARD_ALT,
KEY_SHIFT: PromptFont.KEYBOARD_SHIFT,
KEY_META: PromptFont.KEYBOARD_SUPER,
KEY_TAB: PromptFont.KEYBOARD_TAB,
KEY_CAPSLOCK: PromptFont.KEYBOARD_CAPS,
KEY_BACKSPACE: PromptFont.KEYBOARD_BACKSPACE,
@ -203,6 +205,20 @@ const NINTENDO_AXIS := {
}
static func _compose_modifiers(event: InputEventWithModifiers, base: String) -> String:
# Control -> Alt -> Shift -> Super/Meta
var composed := base
if event.meta_pressed:
composed = COMPOSE_FMT.format([PromptFont.KEYBOARD_SUPER, composed])
if event.shift_pressed:
composed = COMPOSE_FMT.format([PromptFont.KEYBOARD_SHIFT, composed])
if event.alt_pressed:
composed = COMPOSE_FMT.format([PromptFont.KEYBOARD_ALT, composed])
if event.ctrl_pressed:
composed = COMPOSE_FMT.format([PromptFont.KEYBOARD_CONTROL, composed])
return composed
## Get the symbol representing the given keyboard input event.
##
## If there is no such symbol available, returns the key label.
@ -211,12 +227,12 @@ static func key(event: InputEventKey) -> String:
return OS.get_keycode_string(
DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode)
)
return KEYBOARD[event.physical_keycode]
return _compose_modifiers(event, KEYBOARD[event.physical_keycode] as String)
## Get the symbol representing the given mouse button event.
static func mouse_button(event: InputEventMouseButton) -> String:
return MOUSE.get(event.button_index, UNKNOWN_INPUT_SYMBOL)
return _compose_modifiers(event, MOUSE.get(event.button_index, UNKNOWN_INPUT_SYMBOL) as String)
## Get the symbol representing the given gamepad button event.